ios - 如何避免在 Cognito 联合身份中创建未使用的身份

标签 ios amazon-web-services aws-sdk amazon-cognito

每次运行 aws:aws-sdk-ios-samples/CognitoSync-Sample 时,它​​都会为我的设备生成一个新的唯一 IdentityId。如果我关闭应用程序并重新启动它,它会获得相同的 IdentityId(来自钥匙串(keychain))。但是,如果我使用 google 登录,然后注销,它会执行 AWSCognito.defaultCognito().wipe() - 并且删除功能会清除钥匙串(keychain)。

然后,如果我重新启动应用程序,我会获得一个新的唯一 IdentityId。

我第一次使用 google 或 facebook 身份登录时,它使用新创建的 IdentityId 作为经过身份验证的 IdentityId。但在第一次登录后,每当我启动应用程序时,我都会获得一个新 ID,然后当我登录并获得(现在是永久的)Facebook 或 Google ID 时,该 ID 就会被丢弃。

我是否应该编写一些“身份ID清理”函数来清理所有这些旧ID?我应该如何限制 Id 的数量? (每次用户启动我的应用程序并登录时,他都会丢弃一个新的未经身份验证的 ID...永远漂浮在 Cognito Land 中)。

我在 AWSCognitoService.m 中编辑了 AWSCognito.defaultCognito().wipe() 方法并清除了钥匙串(keychain),但这并没有帮助,因为注销后的钥匙串(keychain)包含来自 google 登录的经过身份验证的 IdentityId。

我认为未经身份验证的用户并没有经过深思熟虑。就在使用 3 个 ID 进行测试期间,我每天生成大约十几个 ID,它们在身份池中被标记为禁用。

如何清理它们?或者我如何停止生产它们?

或者我应该记住我自己未经身份验证的 ID,并尝试以某种方式重新连接它们(如果是这样怎么办?)

最佳答案

您似乎不想在应用中支持“ guest 用户”或“未经身份验证的用户”用例。如果这是正确的,您可以为您的身份池禁用“未经身份验证的身份支持”。在这种情况下,您的用户在联合之前始终必须登录某个提供商,并且不会生成不需要的未经身份验证的身份。

如果您确实希望在设备上支持未经身份验证的身份,则不应删除设备存储中的数据。如果您不删除,SDK 将确保它使用缓存的身份 ID,并且不会生成新的身份 ID。与经过身份验证的身份不同,未经身份验证的身份在设计上只有在您知道身份 ID 的情况下才能访问。

关于ios - 如何避免在 Cognito 联合身份中创建未使用的身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39808812/

相关文章:

amazon-web-services - 创建 lambda 函数的开发和生产版本

amazon-web-services - 具有非 ASCII Content-Disposition header 的 S3 PutObjectRequest 会引发异常

amazon-web-services - 同一 AWS Cognito 用户池中的多个应用程序的 cognitoID 对同一用户是否相同?

amazon-web-services - 从技术上讲,s3n、s3a 和 s3 之间有什么区别?

ios - 在静态上下文中引用 'self'

iphone - 如何确定正在编辑 UITableView 中的哪个节标题

ios - 使用 MKMapView 和 MKRoute 获取方向问题

objective-c - 如何在 iOS 中的 Scrollview 中添加 AutoScroll?

amazon-web-services - 在 CloudFormation 中更新用户数据时强制更换 EC2 实例

amazon-web-services - 如何在Amazon Linux2上安装Docker