以下是我们在应用中实施用户帐户的方案
我们不强迫用户完成步骤#3和#4。只要他们不需要切换设备或出厂重置他们的设备,他们就不会失去对访客帐户的访问权限。
使用亚马逊移动SDK 2.3.x和Cognito联合身份池,我们实施了上述步骤:
为了实施这些步骤,我们在引入Cognito用户池之前使用了AWS Mobile Hub生成的示例代码。它使用了AWSIdentityManager和AWSFacebookSignInProvider的组合及其支持代码。一切都按预期工作。
我们现在正尝试转换为最新的亚马逊移动SDK 2.4.9并使用Cognito用户池而不是Facebook登录来实现相同的流程:
步骤#1& #2使用来自AWSMobileHubHelper.framework的AWSIdentityManager实现;步骤#3& #4使用CognitoYourUserPoolsSample示例项目中的示例代码实现。
我们遇到的问题是:
我在这里缺少一个非常重要的步骤。我怀疑我没有明确地将Cognito用户池登录链接到Cognito Identity Pool标识。在他们的CognitoYourUserPoolsSample中,他们没有举例说明如何将用户池标识与联合身份池集成。
文档说要简单地执行此操作并且它是自动的,但我无法使其工作:
AWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:@"UserPool"];
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc]
initWithRegionType:AWSRegionUSEast1
identityPoolId:@“<identity-pool-id>"
identityProviderManager:pool];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
任何人都有任何想法或示例代码来演示这个过程吗?我能找到的最接近的示例代码是fork of CognitoSyncDemo,它仍然不是我需要的。
答案 0 :(得分:6)
凭据提供程序支持标识的合并,但AWSIdentityManager(mobile-hub-helper的一部分)不支持。我有一个修改后的mobile-hub-helper版本(它是https://github.com/BruceBuckland/aws-mobilehub-helper-ios上的mobile-hub-helper github的一个分支)。该分支修改AWSIdentityManager以支持以下几项:1)它支持编写新的AWSSignInProviders(移动中心辅助协议)并使用它们来恢复会话。 2)它支持&#34;允许合并身份&#34;和身份的融合。 3)它有几个辅助方法来查找哪个提供程序正在进行当前的身份验证以及提供程序的友好名称,这对于向用户显示链接的内容很有用,并显示哪个提供程序拒绝登录。
还有一个示例应用程序,其中包含一个用于Cognito用户池的AWSSignInProvider的快速实现。它演示了三个提供商(UserPools FaceBook和Google)的登录注销和帐户关联。它实现了多个用户池功能,包括注册,登录,忘记密码,更新属性以及确认。它位于https://github.com/BruceBuckland/SignIn-awsmhh。
最后,我建议您查看示例应用中的pdf说明。它们可以帮助您更好地理解组件的相互作用。我花了很长时间才了解cognito,并将我的笔记拉到一起,试图为其他人澄清系统。他们在这里:Cognito Notes and Diagram