AccountManager peekAuthToken返回null值

时间:2015-04-15 17:50:32

标签: android accountmanager

我有一个auth令牌保存到AccountManager中,但是,当我执行peekAuthToken(account,authTokenType)时,它返回null。我的呼叫者uid是相同的,帐户确实存在于帐户管理器中。我的清单文件中也有android.permission.AUTHENTICATE_ACCOUNTS。

2 个答案:

答案 0 :(得分:1)

如果帐户不存在或者令牌不在缓存中,则pekAuthToken将返回null。当我们调用从AccountManager获取令牌(如blockingGetAuthToken)时,它将从缓存中获取令牌,而不是在AccountAuthenticator中调用getAuthToken函数。并且因为令牌不在缓存中,所以peekAuthToken返回null。

所以在这种情况下,调用peekAuthToken将毫无意义。

如果你想运行peekAuthToken,在返回令牌之前手动检查一些东西,尝试在 account-authenticator xml文件中添加 android:customTokens =“true”

答案 1 :(得分:0)

AccountManager.peekAuthToken将返回null的可能情况:

  • account中存储的account manager与提供的内容不匹配。
  • 帐户管理器中存储的帐户没有给定的authTokenType
  • 提供的帐户已存在,但其authTokenType与给定的帐户不匹配。

  • 最后,没有为提供的accountauthTokenType)对缓存身份验证令牌。

对于android:customToken=true的身份验证者,您应提供包含到期时间的非负KEY_CUSTOM_TOKEN_EXPIRY long值,以毫秒为单位。

如果android:customTokens=false,令牌会无限期缓存,直到某些客户调用invalidateAuthToken