如何避免在Cognito Federated Identities中创建未使用的身份

时间:2016-10-01 16:15:35

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

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

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

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

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

我在AWSCognitoService.m中编辑了AWSCognito.defaultCognito()。wipe()方法并删除了明确的钥匙串,但这没有用,因为退出后的钥匙串包含来自google登录的经过身份验证的identityId。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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