- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如何使用 Cognito for Android 刷新访问 token ?文档建议如下 ( https://docs.aws.amazon.com/cognito/latest/developerguide/using-amazon-cognito-user-identity-pools-android-sdk.html ):
// Implement authentication handler
AuthenticationHandler handler = new AuthenticationHandler {
@Override
public void onSuccess(CognitoUserSession userSession) {
// Authentication was successful, the "userSession" will have the current valid tokens
// Time to do awesome stuff
}
@Override
public void getAuthenticationDetails(final AuthenticationContinuation continuation, final String userID) {
// User authentication details, userId and password are required to continue.
// Use the "continuation" object to pass the user authentication details
// After the user authentication details are available, wrap them in an AuthenticationDetails class
// Along with userId and password, parameters for user pools for Lambda can be passed here
// The validation parameters "validationParameters" are passed in as a Map<String, String>
AuthenticationDetails authDetails = new AuthenticationDetails(userId, password, validationParameters);
// Now allow the authentication to continue
continuation.setAuthenticationDetails(authDetails);
continuation.continueTask();
}
@Override
public void getMFACode(final MultiFactorAuthenticationContinuation continuation) {
// Multi-factor authentication is required to authenticate
// A code was sent to the user, use the code to continue with the authentication
// Find where the code was sent to
String codeSentHere = continuation.getParameter()[0];
// When the verification code is available, continue to authenticate
continuation.setMfaCode(code);
continuation.continueTask();
}
@Override
public void authenticationChallenge(final ChallengeContinuation continuation) {
// A custom challenge has to be solved to authenticate
// Set the challenge responses
// Call continueTask() method to respond to the challenge and continue with authentication.
}
@Override
public void onFailure(final Exception exception) {
// Authentication failed, probe exception for the cause
}
};
user.getSession(handler);
这就是为什么这不起作用。当 token 过期时,我为其获取 session 的用户对象不再经过身份验证。所以通过下面检索缓存的用户,将返回 null
CognitoUser user = userPool.getCurrentUser();
因为上面返回null,我尝试通过id获取用户对象
CognitoUser user = userPool.getUser(userId);
这完美地工作,除了用户未通过身份验证并且将在随后的回调阶段失败,因为 userID 为空
@Override
public void getAuthenticationDetails(final AuthenticationContinuation continuation, final String userID)
只有当我在 token 过期之前尝试此调用时,它才会起作用,并且我可以收到一个新的访问 token 。但是 token 过期后怎么办呢?对此的任何帮助将不胜感激。提前致谢
最佳答案
当您调用 getSession(...) 获取 token 时,如果缓存的 token 已过期,SDK 将自动刷新 token (只要刷新 token 未过期)。如果刷新 token 也已过期,则会调用 getAuthenticationDetails(...),因为现在需要用户凭据(用户名、密码等)才能获取新的 token 集。获取用户对象的方式无关紧要,即通过 getCurrentUser() 或 getUser(...) 方法,只要存在有效的缓存 token 或 token 可以刷新,您将通过 getSession(. ..).
使用最新的 SDK(版本 2.3.1)重试。
关于android - Cognito 用户池 : How to refresh Access Token Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39111995/
在我的phone-gap index.html javascript部分中,window.refresh用于IOS,this.refresh用于android。我想对两者使用相同的index.html
我正在使用 Guzzle 获取域上设置了元刷新的网页的 HTML: Guzzle 似乎没有拦截这种重定向。这是正确的吗?我可以将 Guzzle 配置为跟随刷新吗? 我应该考虑其他哪些解决方案来解决问
我试图在另一个 DropDownList 发生变化后刷新下拉列表,但是 Refresh() 方法是未定义错误正在提升。我再次尝试读取数据源,它显示它正在加载,但数据仍然相同。请帮助解决这个问题。 代码
swift 我正在努力做到这一点,当您在 tableview 上拉动刷新时,它会使用存储在 Parse.com 上的数据更新 tableview 我已经研究过了,看来我需要使用 loadObjects
我有以下物化 View - CREATE MATERIALIZED VIEW TESTRESULT ON PREBUILT TABLE WITH REDUCED PRECISION REFRESH F
我正在使用 Cognito 用户池对系统中的用户进行身份验证。成功的身份验证会提供ID token (JWT)、访问 token (JWT) 和刷新 token 。 documentation her
我想使用 FlashMessage 显示错误(或成功)消息同时让我的页面在所需时间重新加载 我正在使用 FlashMessage我的代码看起来像 render() { return ( {
更新:我已经写了一篇博文,介绍我对这个问题的了解。我仍然不完全理解它,但希望有人会阅读这篇文章并阐明我的问题:http://andymcfee.com/2012/04/04/icon-fonts-ps
所以我有一个物化 View (我知道......): CREATE MATERIALIZED VIEW vw_my_view_here REFRESH COMPLETE START WITH SYSD
我正在尝试使用 the angular-oauth2-oidc Silent Refresh实现与在 IdentityServer4 服务器中配置的隐式流相结合。我有一个在 ng new ng-and
TL;DR - 如果 oauth2 授权发生在原生 android/ios 应用程序中,我如何在后端刷新 token ? 我正在研究 oauth2 与谷歌日历的集成。我的堆栈是将 SPA 应用程序作为
作为前言,我对java很陌生。因此,请期待愚蠢的错误。 我正在尝试在 BlueJ 中使用 java 的绘图面板做一个项目,但我不知道如何制作一个具有移动对象的程序。这是一个项目,所以提供了代码。我们必
我正在尝试使用我在许多网站上找到的不显眼但非常有用的润色来润色我的网络编程技能。 Stackoverflow.com,举个例子。当我提出问题时,页面会提交问题,我的浏览器会自行重新加载并显示我的问题。
AjaxControlToolkit.dll.refresh 文件的作用是什么? 最佳答案 *.dll.refresh 文件是一个非常简单的文件,它告诉项目外部引用所在的位置。 http://mons
如何使用watir-webdrive刷新页面? 我尝试了他们在这里说的话:http://watirwebdriver.com/sending-special-keys/,但是没有运气。 browser
我目前正在制作一个交互式图表,该图表应该计算商业项目的潜在风险因素。为此,我一直在使用百度 ECharts,并让图表在视觉上工作,但是当数据发生变化时无法让图表更新。 数据来自外部调查问卷,该问卷使用
在 plupload div 之后,我有一个带有 plupload 的上传表单和一个带有 bool 值的复选框。 如果选中该复选框,我想更改 plupload 中 url 的值。 这是我的代码
我有一个相当大的PHP代码库(10k文件),可以在Windows计算机上使用Eclipse 3.4/PDT 2来工作,而这些文件则托管在Debian文件服务器上。我通过Windows上的映射驱动器进行
使用 Angularjs v0.9 和 php 来实现我的成员(member)系统 在下面的函数中,我将调用一个api来编辑成员(member)的数据,成功后,php函数将返回 {"success":
我正在使用 setColor 和 getColor 方法更改 JPanel 的颜色。 现在我想更改它,这样您就不必在调用 getColor 的函数中单击 getColor 按钮 100 毫秒。 但是在
我是一名优秀的程序员,十分优秀!