每次运行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,并尝试以某种方式与它们重新连接(如果是这样的话?)答案 0 :(得分:1)
您似乎不希望在应用中支持“访客用户”或“未经身份验证的用户”用例。如果这是正确的,您可以为您的身份池禁用“未经身份验证的身份支持”。在这种情况下联合之前,您的用户将始终必须使用某些提供程序登录,并且不会生成不需要的未经身份验证的身份。
如果您确实希望在设备上支持未经身份验证的身份,则不应从设备存储中擦除数据。如果您不擦除,SDK将确保它使用缓存的身份标识,并且不会生成新标识。与经过身份验证的身份不同,未经身份验证的身份仅在您知道身份ID时才可访问。