【问题标题】:Android AccountManager and dmfs/oauth2-essentials using refresh tokenAndroid AccountManager 和 dmfs/oauth2-essentials 使用刷新令牌
【发布时间】:2018-05-17 19:26:40
【问题描述】:

我正在尝试在应用程序中将 dmfs/oauth2-essentials 用于 oauth2。问题是刷新令牌。我能够在AccountManager 中存储令牌字符串并刷新令牌字符串。使用用户数据包刷新令牌。用户首先使用ResourceOwnerPasswordGrant 登录并收到带有刷新令牌的令牌。

问题是 Bundle 只接受原始的东西,比如要存储的字符串。但是dmfs/oauth2-essentials在使用TokenRefreshGrant()时需要OAuth2AccessToken对象

有没有办法直接使用刷新令牌字符串?我错过了什么吗?

谢谢!

【问题讨论】:

    标签: android oauth-2.0 accountmanager refresh-token


    【解决方案1】:

    我不知道你是否解决了你的问题,但我会在这里写下我的经验,以防万一。

    您可以使用 AccountManager 在 android 中创建一个帐户。将 AccessToken 存储在 Account 中是对的,但也许您还没有意识到您可以在一个 Account 中存储 多个令牌,只需键入不同的令牌类型。这样,您可以使用peekAuthToken(Account account, String authTokenType) 检索不同的令牌,只需传递不同的 authTokenType 字符串。请注意不要让用户在getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle options) 中的 Authenticator 之外检索 refreshToken,我通过比较 authTokenType 字符串来做到这一点。

    【讨论】:

    • 我将令牌转换为 JSON 并将整个内容存储为文本。在 dmfs GitHub 上查看我的问题 -> github.com/dmfs/oauth2-essentials/issues/50
    • 你能告诉我你是如何更新你的访问令牌的吗?我的意思是,当过期发生时,如何使用刷新令牌获得新的访问令牌。谢谢!
    • 使用dmfs/oauth2-essentials 可以使用OAuth2AccessToken 对象请求刷新。如果你查看它的文档,你可以看到它是如何工作的。然后我将新的令牌对象再次存储为字符串以供将来使用。我有一个关于如何在第一条消息中链接的问题报告中刷新令牌的示例。
    猜你喜欢
    • 2012-06-19
    • 2017-04-20
    • 1970-01-01
    • 2013-03-16
    • 2017-03-29
    • 2017-12-13
    • 2012-07-21
    • 2017-05-29
    • 2016-01-25
    相关资源
    最近更新 更多