4

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

但是不知道怎么退出?

4

3 回答 3

4

你没有。当您使用内置的 android 身份验证时,您使用用户在“Accounts and Sync”控制面板中提供的用户名和密码进行身份验证。获得该身份验证后,您可以使用它来获取一个身份验证令牌,您应该缓存并使用该身份验证令牌,直到它变坏为止。

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

  1. Google 喜欢该令牌并使用它(代替用户名/密码对)对您进行身份验证,并为您的请求返回数据。
  2. Google 返回 http 错误 40x,表示您提供的 auth-token 不好。

后一种情况的发生有两个原因:

  1. 它太旧了。Google 希望您定期重新进行身份验证(就像您必须每周或每两周在 gmail.com 输入密码以确保它仍然是您一样。)发生这种情况时,使身份验证令牌无效(有一个函数调用)并获得一个新的一个。
  2. 自从您获得身份验证令牌后,用户已更改其密码。同样的事情,除了一路上,设备将无法进行身份验证,然后会向用户抱怨他们需要重新输入密码,在他们这样做之前,您将获得一个 NULL 身份验证令牌,或者调用将阻止直到他们获得密码(取决于您用于获取令牌的函数调用)。

无论如何,您永远不会注销。您只需将服务与您获得并缓存的身份验证令牌一起使用,直到不再使用为止。将您获得的身份验证令牌想象成一个会话密钥,只要您使用它,它就会一直保持良好状态。

于 2011-02-28T14:57:05.157 回答
3

为什么不通过调用使您当前的身份验证令牌无效

 AccountManager.getInstance().invalidateAuthToken(accountType, currentToken);

AccountManager.invalidateAuthToken 文档

于 2013-05-22T23:28:45.507 回答
2

AccountManager clearPassword(帐户帐户)

来自 AccountManager:

忘记保存的密码。这将删除密码的本地副本;它不会更改用户在服务器上的帐户密码。具有相同的效果,setPassword(account, null)但需要较少的权限,并且可以被应用程序或管理界面用于“退出”帐户。

于 2015-08-27T18:49:46.147 回答