如何使用AWS Amplify Android强制认证令牌刷新?

时间:2020-11-12 08:35:16

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

我找不到有关如何使用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年左右,因此目前不是问题。问题在于,旧的访问令牌过期后将无法创建新的访问令牌,并且我无法执行任何经过身份验证的用户操作。

是否可以快速检查令牌是否有效-如果无效,请刷新令牌?

1 个答案:

答案 0 :(得分:1)

我查看了“fetchauthsession”的源码,将异步模式改为同步模式。

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