我一直在尝试为我的用户池用户生成这个“身份ID”来访问AWS资源 . 但是没有成功 .
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
//user pool configuration
let serviceConfiguration = AWSServiceConfiguration(
region: AWSRegionType.USWest2,
credentialsProvider: nil)
let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: K.COGNITO_USER_POOL_APP_CLIENT_ID, clientSecret: K.COGNITO_USER_POOL_APP_CLIENT_SECRET, poolId: K.COGNITO_USER_POOL_ID)
//create a pool
AWSCognitoIdentityUserPool.registerCognitoIdentityUserPoolWithConfiguration(serviceConfiguration, userPoolConfiguration: userPoolConfiguration, forKey: "UserPool")
self.pool = AWSCognitoIdentityUserPool(forKey: "UserPool")
self.credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USWest2, identityPoolId: K.IDENTITY_POOL_ID, identityProviderManager: self.pool!)
let configuration = AWSServiceConfiguration(region: AWSRegionType.USWest2, credentialsProvider: self.credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
self.pool!.delegate = self
self.user = self.pool!.currentUser()
return true
}
这就是Integrating User pool with Cognito(Swift) Documentation.中给出的所有内容
虽然Android代码说在登录映射中传递“idToken”和用户池URL,但swift代码中没有提到这样的东西 .
到目前为止,在用户登录应用程序后,我在Xcode的日志窗口中获得“AccessToken”和“IdToken” .
我还需要做些什么才能获得经过身份验证的身份?如果我做错了,请纠正我..谢谢 .
2 回答
您是对的,文档对身份池和用户池并没有太大帮助,并使它们集成 .
我的建议是,而不是依赖于其他文档或示例,使用AWS Mobile Hub . 如果您使用该网站,它将下载一个完整的Swift Xcode项目,该项目可以正确地集成用户池和另一个身份提供商(Google或Facebook) . 用户池集成是移动集线器的新功能 .
此外,移动集线器具有下载应用程序的漂亮架构,将Identity Managment与登录管理分开 .
但是如果你想继续使用文档来解决这个问题,那么下面的一组注释应该有所帮助 . 加上以下几点 .
1)如果您使用SDK,则无需管理令牌,SDK会为您保留并交换令牌 .
2)您所要做的就是正确配置用户池,正确配置IAM,并调用一小段SDK调用(如下所述) . 移动中心所做的一件好事就是为您提供一切,让您在学习的同时修改和发展它 .
3)短序列调用是: - 创建用户池 - 创建一个标识池 - 使用户池成为您的服务配置的identityProviderManager(注意:您已完成上述所有操作,因此您只需执行以下步骤) - 执行Get Identity API调用(这是在执行“Get Session”SDK调用时完成的 . - 执行GetCredentialsForIdentity API调用(这是在执行“凭据”SDK调用时完成的)
此时,您将拥有凭据并能够根据您登录(已验证)的状态以及IAM中的任何关联规则访问AWS服务 .
在这些笔记中有一个(我认为)有用的解释:notes on using cognito and user pools
此外,在该存储库中,存在具有一起工作的身份池的用户池的示例,包括注册,忘记密码等,并且包括进行身份合并的能力 .
(Mobile Hub中的新用户池代码现在很好地完成了一些(截至4天前他们添加了用户池代码)但尚未进行身份合并) .
希望这可以帮助
这可能是遥远的,但我现在已经开发了近一年的自己的应用程序了,所以我的记忆力有限 - 我不记得我是如何设置MobileHub的,如果我可能搞砸了办法 .
我能够登录用户,但他们未经身份验证 . 我不能为我的生活认证用户 . 我继续前进,今晚才解决了这个问题 . 我意识到,在整个过程中,我的awsconfiguration.json中CognitoUserPoolId,AppClientId和AppClientSecret的值都是错误的 . 我记得大约一年前我不得不改变CognitoIdentityPoolId,但我不知道为什么 . 我也知道我从AWS Mobile Hub示例项目中为我的应用程序下载了此文件 .
无论如何,值得检查这些值以确保它们都符合预期值 . 这很重要,因为我能够使用我的应用程序未经验证,但通常其中3个关键值是错误的 .