如果我在代码中手动拨打电话或使用邮递员,我的服务器会返回正确的ID,并且Cognito会识别它并正确交换令牌.
iOS框架似乎是自我分配一个不正确的IDentityID.我真的很难理解文档,因为它已经过时且含糊不清.
这是我的代码如下:
NSLog(@"Complete login"); NSMutableDictionary *merge = [NSMutableDictionary dictionaryWithDictionary:self.credentialsProvIDer.logins]; [merge addEntrIEsFromDictionary:logins]; self.credentialsProvIDer.logins = merge; // Force a refresh of credentials to see if we need to merge task = [self.credentialsProvIDer refresh]; NSLog(@"Complete login 2-- %@",self.credentialsProvIDer.IDentityID); //The IDentityID assigned is incorrect... NSLog(@"Complete login 2-- %@",self.credentialsProvIDer.IDentityPoolID); //The IDentityPoolID is correct
下面的一些清晰度:
到目前为止它是如何工作的:
1 – 当应用程序运行时,它会自动从amazon分配一个随机的IDentityID(因此用户最初是未经身份验证的).
2 – 用户输入他们的凭证然后我的代码向我的后端发出URL请求,该请求返回有效的令牌以及用户名和密码的正确IDentityID.
3 – 现在需要在代码中初始化这个新的IDentityID以覆盖旧的未经身份验证的IDentityID.
4 – 从我的服务器返回的新IDendityID和令牌需要发送到Cognito进行最终身份验证,Cognito会返回更多身份验证.当我手动说我通过邮递员发送请求.
简而言之:
1:如何更改/设置我的IDentityID?
2:如何将从我的后端收到的更新凭证发送到Cognito?
ID<AWSCognitoCredentialsProvIDer> credentialsProvIDer = [[AWSCognitoCredentialsProvIDer alloc] initWithRegionType:<Region> IDentityProvIDer:IDentityProvIDer unauthRoleArn:nil authRoleArn:nil];
用户通过身份验证后,请确保更新登录映射,如下所示:
credentialsProvIDer.logins = @{DeveloperProvIDername: userIDentifIEr}[credentialsProvIDer refresh];
来源:http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html
p.s.:确保正确实现身份提供程序,并在refresh方法中设置IDentityID
- (AWSTask *)refresh { /* * Get the IDentityID and token by making a call to your backend */ // Call to your backend // Set the IDentity ID and token self.IDentityID = response.IDentityID; self.token = response.token; return [AWSTask taskWithResult:self.IDentityID];}总结
以上是内存溢出为你收集整理的ios – Amazon Cognito使用开发人员身份验证Obj C设置identityId全部内容,希望文章能够帮你解决ios – Amazon Cognito使用开发人员身份验证Obj C设置identityId所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)