2

gdata を使用してユーザーの Google Finance ポートフォリオからフィードを取得する作業コードがありますが、setUserCredentials(username,password)を使用する必要がありました。私がしたいのは、Android デバイスが既に Google アカウントにアクセスできるため、ユーザーにユーザー名/パスワードを要求することを避けることです。

setUserToken(String)でこれを行うことができるはずだと思いますが、Android から適切なトークンを取得する方法がわかりません。AccountManager.get(context).blockingGetAuthToken()を試しましたが、それは正しい呼び出しではないか、間違った引数を渡しています。

電話でユーザーの既存の Google 資格情報を使用して gdata を操作した人はいますか?

前もってありがとう、レニー

4

1 に答える 1

0

AccountManager.blockingGetAuthToken()正しい呼び出しです。Account、および-- を渡しString authTokenTypeます。あなたの場合は、"android"または"finance"を選択します (探している文字列の値は明確に文書化されていません)。

onPerformSync()アカウントを取得する簡単な方法は、同期アダプターを実装するクラスの呼び出しの一部として、すべてのクライアント通信を行うことです。SyncAdapter のセットアップに関するチュートリアルが多数あります。SyncAdapter を実行する過程で、おそらく次のようなパーミッションの混乱が発生します。

<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" />

これらの最後の 2 つは、ちょっとトリッキーですが、誰がどこから知っているかを掘り出しました。

于 2011-02-24T22:49:19.790 に答える