每次运行 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/