【发布时间】:2021-02-24 06:02:04
【问题描述】:
我找不到有关如何使用 AWS 的 Amplify Android 库刷新访问令牌的信息。
在文档和一些论坛中,有人建议这一切都是自动发生的。但就我而言,它没有。
在应用程序中,我使用 Amplify Auth 进行用户身份验证,还使用 Amplify Storage 和 Amplify Predictions。
为了查询我的数据库,我使用了适用于 Android 的 AWS 开发工具包中的 DynamoDBMapper。
到目前为止,我已尝试通过以下方式强制刷新令牌:
auth.currentUserAWSMovileClient.getInstance().tokensAWSMobileClient.getInstance().currentUserState()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