com.google.gdata.client.GoogleService.setUserToken(android.accounts.AccountManager.getAuthToken(???))

情到浓时终转凉″ 提交于 2020-01-01 03:44:21

问题


I've got working code that uses the gdata to retrieve feeds from my user's Google Finance portfolios, but I had to use setUserCredentials(username,password). What I'd like to do is avoid asking the user for their username/password since the Android device already has access to their Google account.

I believe I should be able to do this with setUserToken(String), but I can't figure out how to get the appropriate token from Android. I've tried AccountManager.get(context).blockingGetAuthToken() but that's either not the correct call or I'm passing it the wrong arguments.

Has anyone gotten gdata working with the user's existing Google credentials on the phone?

Thanks in advance, Lenny


回答1:


AccountManager.blockingGetAuthToken() is the correct call. Pass it an Account, and an String authTokenType -- In your case, "android" or "finance", your pick (the values of the strings it's looking for are not clearly documented).

The easy way to obtain an account is to do all your client comms as part of the onPerformSync() call on a class that implmenents a Sync Adapter. You can find a number of tutorials on getting a SyncAdapter set up. As part of getting your SyncAdapter going, you'll end up with a mess of permissions, probably like the following or so:

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> 
<uses-permission android:name="android.permission.READ_SYNC_STATS" /> 
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> 
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> 
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" /> 
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.finance" />

Those last two, again, sort of tricksy, dug them out of who knows where.



来源:https://stackoverflow.com/questions/2025985/com-google-gdata-client-googleservice-setusertokenandroid-accounts-accountmanag

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!