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

How to avoid creating unused identities in Cognito Federated Identities

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

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

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

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

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

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

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

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

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

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