AWSMobileClient 初始化在卸载并安装应用程序后返回用户状态“SignedIn”
Posted
技术标签:
【中文标题】AWSMobileClient 初始化在卸载并安装应用程序后返回用户状态“SignedIn”【英文标题】:AWSMobileClient initialise returns user-state "SignedIn" after uninstalling and then installing application 【发布时间】:2020-07-22 10:05:48 【问题描述】:我正在使用 aws-cognito UserPool(通过 AWSMobileClient)对用户进行身份验证以访问 AWS 服务。 目前用户可以选择通过 Phone、Google 和 Facebook 使用 Hosted UI 选项登录,这需要通过以下方式初始化 AWSMobileClient。 AWSMobileClient.default().initialize( Void##(UserState?, Error?) -> Void#>) 这会返回我当前的用户状态。
用例:我通过 UserPool 登录我的应用程序,然后卸载该应用程序。重新安装应用程序时,我获取当前用户状态,它返回为“已登录”。
我怎样才能阻止这种行为?
【问题讨论】:
【参考方案1】:“问题”是AWS SDK将登录信息存储在钥匙串中,并且在卸载应用程序时不会删除此信息。
解决方案是在用户首次访问应用时执行注销。在 UserDefaults 中使用 Bool 来判断是否是第一次访问。
【讨论】:
是的,我知道信息存储在钥匙串中,并且在尝试登录时,如果 AWSMobileError 是指用户已登录的“invalidState”,我然后注销(以避免多余的签名-out 调用),完成后我再次执行登录操作。还调用了 clearKeychain 方法以在用户注销时从钥匙串中删除所有登录名,但由于在此处使用 HostedUI,因此会在调用 AWSMobileClient 的初始化方法时获取来自 awsconfiguration.json 的凭证并为用户获取最后一个用户状态以上是关于AWSMobileClient 初始化在卸载并安装应用程序后返回用户状态“SignedIn”的主要内容,如果未能解决你的问题,请参考以下文章
如何在iOS中使用AWSMobileClient获取AWS Cognito用户属性?
iOS:调用 AWSMobileClient initialize() 使 getUserAttributes() 不调用回调