【问题标题】:How to force auth token refresh with AWS Amplify Android?如何使用 AWS Amplify Android 强制刷新身份验证令牌?
【发布时间】:2021-02-24 06:02:04
【问题描述】:

我找不到有关如何使用 AWS 的 Amplify Android 库刷新访问令牌的信息。

在文档和一些论坛中,有人建议这一切都是自动发生的。但就我而言,它没有。

在应用程序中,我使用 Amplify Auth 进行用户身份验证,还使用 ​​Amplify Storage 和 Amplify Predictions。

为了查询我的数据库,我使用了适用于 Android 的 AWS 开发工具包中的 DynamoDBMapper

到目前为止,我已尝试通过以下方式强制刷新令牌:

  1. auth.currentUser
  2. AWSMovileClient.getInstance().tokens
  3. AWSMobileClient.getInstance().currentUserState()
  4. Amplify.Auth.fetchAuthSession()

前三个都没有工作。 fetchAuthSession(...) 是我现在使用的技术,但它是异步的,需要一点时间才能产生结果。我必须在我的splash activity 中同步运行它。否则,如果它是异步的并且有依赖于其结果的对数据库权限的请求,则数据库调用将导致NotAuthorizedException

另外,刷新令牌可以设置为 10 年左右,所以目前不成问题。问题是旧的访问令牌过期后没有创建新的访问令牌,我无法执行任何经过身份验证的用户操作。

有没有办法快速检查令牌是否有效——如果不是,刷新它们?

【问题讨论】:

  • 以下回复是否解决了您的问题? stackoverflow.com/a/55614839/1721793
  • @kekec:这是@baltekg 的问题。该链接指向一些 JavaScript 代码。
  • 你是对的。这是一个 github 问题,要求提供类似的功能,在此响应中,他们指出了如何在 Android 中实现这一点:github.com/aws-amplify/aws-sdk-android/issues/…
  • @kekec 我已经看到了这个问题并且这种技术不起作用,getTokens() 返回以前的令牌并且不刷新它们。也许有时确实如此,但根据我的测试,它没有这样做。
  • 如果你强制刷新会话并请求令牌?

标签: android amazon-web-services amazon-cognito aws-amplify aws-sdk-android


【解决方案1】:

我看了一下“fetchauthsession”的源码,把异步模式改成同步模式。

https://github.com/shichonghuotian/Amplify-token-sync

【讨论】:

    猜你喜欢
    • 2020-08-30
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 2022-09-28
    • 2020-07-07
    • 2020-10-16
    • 2016-04-04
    相关资源
    最近更新 更多