如何使用 AWS Amplify Android 强制刷新身份验证令牌?

bal*_*ekg 5 android amazon-web-services amazon-cognito aws-amplify aws-sdk-android

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

在文档和一些论坛上,有人建议这一切都会自动发生。但就我而言,事实并非如此。

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

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

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

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

前三个都不起作用。fetchAuthSession(...)是我现在使用的技术,但它是异步的,需要一些时间才能产生结果。我必须在我的splash activity. 否则,如果它是异步的并且存在对数据库的请求,该请求取决于其结果,则数据库调用将导致NotAuthorizedException.

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

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

小智 1

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

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