3

我从一天开始就在寻找答案,但我仍然不知道该怎么办!解释问题:我的应用程序使用 GTasks API。为此,用户必须有一个谷歌帐户。我有两种方法可以检查:

  1. 如果没有这样的帐户,我会实例化一个客户经理并寻找“com.google”帐户
  2. 我启动了一个用户登录 Google 并接受使用 API 的 web 视图。

然后,我必须将我的应用程序与 GTask 同步。从 webview 中提取的信息中,我尝试使用 AccountManager 创建一个“com.google”帐户,但我总是遇到错误“Caller UID is different...”。我知道问题应该来自“account-authenticator”,因为“accountType”在 XML 文件和应用程序中必须相同,但我认为情况并非如此,因为当我使用不同的帐户类型时,它可以完美运行(但我无法从 GTask 获得 authToken)。

所以,这是我的代码:

身份验证器.xml:

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
    android:accountType="com.google"
    android:icon="@drawable/miniicon"
    android:smallIcon="@drawable/miniicon"
    android:label="@string/app_name"
    android:accountPreferences="@xml/preferences"
 />

账户类型定义:

 public class AuthenticationService extends Service {
     public static final String ACCOUNT_TYPE = "com.google";

我如何在课堂上使用它:

 AccountManager manager = AccountManager.get(activity);

 final Account account = new Account(login, AuthenticationService.ACCOUNT_TYPE);
 manager.addAccountExplicitly(account, password, new Bundle());

当我使用“com.plop”或其他东西而不是“com.google”时,它工作得非常好。

所以,我的两个问题是: 1. 我可以使用“com.google”帐户类型吗?2.我不能使用“com.google”以外的其他东西获取我的authToken是否正常(知道使用的帐户仍然是Google帐户,它只是在Android上没有设置)?

提前感谢您的帮助,如果答案在网站上,请原谅我!

4

1 回答 1

2

我回答了我自己的问题:这不可能是我想要的。您必须使用“com.google”帐户类型来使用“addAccount”功能。这将导致弹出android系统使用的帐户创建活动。然后,使用 GTasks API 一切正常。

于 2011-12-23T11:32:41.550 回答