2

我有工作代码使用 gdata 从我的用户的 Google Finance 投资组合中检索提要,但我必须使用setUserCredentials(username,password)。我想做的是避免向用户询问他们的用户名/密码,因为 Android 设备已经可以访问他们的 Google 帐户。

我相信我应该能够使用setUserToken(String)来做到这一点,但我不知道如何从 Android 获取适当的令牌。我试过AccountManager.get(context).blockingGetAuthToken()但这不是正确的调用,或者我传递了错误的参数。

有没有人让 gdata 在手机上使用用户现有的 Google 凭据?

在此先感谢,莱尼

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

最后两个,再一次,有点狡猾,把他们从不知道在哪里挖出来的。

于 2011-02-24T22:49:19.790 回答