- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在试验 Cognito,当我认为它开始没问题时,我遇到了 (Google) token 在 1 小时后过期的问题。
当我开始使用干净的设备时,我可以注册并使用该应用程序 1 小时,然后当我需要刷新数据集时,我会收到错误消息,提示 token 未被授权。
有没有关于如何处理这个的例子?
这真的是应用程序开发人员应该做的事情吗?我期待 SDK 在后台管理这些事情。
这是否意味着我们必须在每次数据集同步之前检查 credentialsProvider.getSessionCredentitalsExpiration()?
非常感谢,JM
编辑 1:添加代码
我确实有一个 SigninActivity,但只有在根本不存在凭据时才会调用它,理论上只会在用户第一次登录时调用一次。
它的构建如下(删除了无用的位)。所以发生的事情是我第一次进行了身份验证,但由于我再也没有进入此 Activity ,所以可能缺少某些东西。
但必须有一种方法可以静默刷新此 token 吗?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.signin);
// Aws Credential provider
credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(), // Context
getString(R.string.aws_identity_pool), // Identity Pool ID
Regions.EU_WEST_1 // Region
);
// Google connect
findViewById(R.id.signin_with_google_btn).setOnClickListener(this);
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestProfile()
.requestIdToken(getString(R.string.google_server_client_id))
.requestId()
.build();
// Build a GoogleApiClient with access to the Google Sign-In API and the
// options specified by gso.
googleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this )
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
SignInButton signInButton = (SignInButton) findViewById(R.id.signin_with_google_btn);
signInButton.setSize(SignInButton.SIZE_WIDE);
signInButton.setScopes(gso.getScopeArray());
signInButton.setColorScheme(SignInButton.COLOR_DARK);
}
@Override
public void onClick(View view) {
this.signinWithGoogle();
}
/**
* Triggers Google signin
*/
private void signinWithGoogle() {
Log.v(this, "Signing in with Google...");
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
this.startActivityForResult(signInIntent, GOOGLE_SIGN_IN);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == GOOGLE_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
this.handleGoogleSignInResult(result);
} else {
// Other stuff
}
}
/**
* Handle Google sign in result
*/
private void handleGoogleSignInResult(GoogleSignInResult result) {
if (result.isSuccess()) {
Log.v(this, "Successfully logged in with Google...");
GoogleSignInAccount acct = result.getSignInAccount();
Log.v(this, "Signed in as %s / %s (token %s)", acct.getDisplayName(), acct.getEmail(), acct.getIdToken());
Map<String, String> logins = new HashMap<>();
logins.put("accounts.google.com", acct.getIdToken());
Log.v(SigninActivity.this, "Google token <<<\n%s\n>>>", logins.get("accounts.google.com"));
credentialsProvider.setLogins(logins);
} else {
// Signed out
Log.w(this, "Failed to authenticate against Google #%d - %s", result.getStatus().getStatusCode(), result.getStatus().getStatusMessage());
SimpleMessageDialog.show(SigninActivity.this,
R.drawable.icon,
R.string.error,
R.string.sorry_error_signing_you_in_please_try_again,
R.string.try_again);
}
}
最佳答案
您是否遵循记录的所有步骤 here ? SDK 将自动为您获取 AWS 凭据以交换有效 token ,但如果您的 Google token 已过期,则您需要刷新它。
关于android - AWS 认知 : dealing with token expiration time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35295938/
使用 Cognito 的 forgotPassword 函数时,如果我尝试运行忘记密码方法超过 5 次,我会收到“LimitExceededException”错误。 此时是否有关于此的进一步文档?
我正在尝试向 Azure 的认知文本分析提供一些简单的、Hello-Worldish 的 JSON 示例;使用此测试数据: { "documents": [ { "lan
我正在尝试向 Azure 的认知文本分析提供一些简单的、Hello-Worldish 的 JSON 示例;使用此测试数据: { "documents": [ { "lan
我无法获得我的 CognitoIdentity 的凭据。当用户通过身份验证成功后,他需要获得一个身份才能访问其他 AWS 服务。在我的例子中就是 AWS IoT。但不知何故,我无法获得任何凭证。 这是
我正在使用 aws lambdas、dynamodb 和 cognito 构建身份验证系统。 我一直在比较 getOpenIdTokenForDeveloperIdentity() 提供的 token
我在 Cognito 中单击了“重置密码”,现在登录时出现“PasswordResetRequiredException”,我该如何处理?我在文档中找不到任何内容告诉我应该怎么做? 最佳答案 检查这个
我正在使用 Azure 认知服务,更准确地说是“bing 图像搜索服务”。我发送请求以获取与特定关键字相关的图像。 为此,我向正确的 Azure 端点发出 HTTP REST 请求: 'https:/
我正在使用 Azure 认知服务,更准确地说是“bing 图像搜索服务”。我发送请求以获取与特定关键字相关的图像。 为此,我向正确的 Azure 端点发出 HTTP REST 请求: 'https:/
如果用户登录,我会检查用户是否有 IoT 所需的策略,如果没有,我会附加它。 如果我是第一次登录,这很好用。 现在,当我注销并尝试使用不同的用户登录时,由于某种原因缺少凭据,当我刷新页面时,它再次工作
我将使用 Express 制作的 API 与 API Gateway 封装在一起。我正在使用 Cognito Userpool 来验证 API Gateway。 当我使用 Angular2 http
目前,每次重新启动应用程序时,用户都必须登录。我希望应用程序能够记住用户,直到他们手动注销。以下是我认为可行的方法,但它只是完全绕过了登录 Activity 。 @Override protected
想知道,如何识别图像是否包含特定对象并且该对象完全可见(而不是部分可见)。 Cognitive Services Computer Vision API提供了一组标签和我发送的图像的描述,但是,没有信
用例如下 我们的系统中有面孔列表 用户将上传一张图片 我们希望显示与上传图像匹配的面孔列表,例如置信度 >0.8 现在查看how to ,我的理解如下 使用人脸检测API,我们需要首先上传所有图像,包
用例如下 我们的系统中有面孔列表 用户将上传一张图片 我们希望显示与上传图像匹配的面孔列表,例如置信度 >0.8 现在查看how to ,我的理解如下 使用人脸检测API,我们需要首先上传所有图像,包
上下文 我使用 booth Cognito 用户池和 Cognito 身份池来登录用户。 我想完成一个简单的任务,让用户在 iOS 应用程序(Swift 应用程序)上登录。 我的应用程序基于自定义版本
我在捕获 Cognito 注册错误时遇到困难。当 Cognito 返回“UsernameExistsException”、“message”:“User already exists”错误时,我试图提
我正在试验 Cognito,当我认为它开始没问题时,我遇到了 (Google) token 在 1 小时后过期的问题。 当我开始使用干净的设备时,我可以注册并使用该应用程序 1 小时,然后当我需要刷新
我正在使用 AWS Cognito ( http://docs.aws.amazon.com/cognito/latest/developerguide/using-amazon-cognito-us
是否有办法防止云形成更新删除或重新创建 Cognito 用户池资源?我想消除这种情况发生的可能性。有办法吗? 最佳答案 我找到了答案。使用删除策略。适用于任何 Cloud Formation 资源:
我正在调用 Azure 认知 API 进行 OCR 文本识别,并且同时传递 10 个图像(因为下面的代码一次只接受一个图像 - 即 10 个独立的请求并行),从处理的角度来看,这对我来说效率不高,因为
我是一名优秀的程序员,十分优秀!