如何使用AndroidAccountManager注销

时间:2011-02-28 11:51:33

标签: android login logout google-api-java-client

我可以使用此代码使用Android AccountManager登录: http://code.google.com/p/google-api-java-client/wiki/AndroidAccountManager

但我不知道如何退出?

3 个答案:

答案 0 :(得分:4)

你没有。当您使用内置的Android身份验证时,您使用用户在“帐户和同步”控制面板中提供的用户名和密码进行身份验证。一旦进行了身份验证,就可以使用它来获取一个auth-token,你应该缓存并使用它,直到它变坏为止。

因此,让我们一起使用“com.google”风格帐户访问Google服务的方式。当您的应用想要同步时,您将最终使用AccountManager进行身份验证(您绝对应该使用SyncAdapter来执行此操作)。进行身份验证后,您将获得一个身份验证令牌。这是一大串随机字母,在随后的网络电话中充当“密钥”。您将保存此功能,只要它很好,您就不需要再次进行身份验证。所以,想要去获取...比方说,谷歌金融投资组合。您将auth-token包含在http get标头的一部分中。发生以下两件事之一:

  1. Google喜欢该令牌并使用它(代替用户名/密码对)对您进行身份验证,并返回您请求的数据。
  2. Google返回http错误40x,表示youp提供的auth-token不合适。
  3. 后一种情况将出现两个原因:

    1. 太旧了。 Google希望您定期重新进行身份验证(就像您必须每周或每两周在gmail.com输入密码一样,以确保它仍然是您。)发生这种情况时,请使身份验证令牌失效(有一个函数调用)并获取新的。
    2. 自获得身份验证令牌以来,用户已更改密码。同样的事情,除了一路上,设备将无法进行身份验证,然后会向用户抱怨他们需要重新输入他们的密码,直到他们这样做,你将获得一个NULL身份验证令牌或呼叫将阻止,直到他们获得密码(取决于您用来获取令牌的函数调用)。
    3. 无论如何,你永远不会退出。您只需将服务与已获取并缓存的身份验证令牌一起使用,直到您不再使用该身份。将您获得的身份验证令牌视为会话密钥,只要您使用它就会保持良好状态。

答案 1 :(得分:3)

为什么不通过调用

使当前的身份验证令牌无效
 AccountManager.getInstance().invalidateAuthToken(accountType, currentToken);

AccountManager.invalidateAuthToken Documentation

答案 2 :(得分:2)

AccountManager clearPassword(帐户帐户)

来自AccountManager:

  

忘记保存的密码。这将删除密码的本地副本;   它不会更改服务器上用户的帐户密码。有   效果与setPassword(account, null)相同,但要求更少   权限,可以由应用程序或管理界面使用   到"退出"来自一个帐户。