4

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

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

4

1 回答 1

1

I took a look at the source code of "fetchauthsession", and changed the asynchronous mode to synchronous mode.

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

于 2021-01-11T13:30:41.393 回答