我实现了带有身份验证的Google SignIn代码,以访问Google,并有一个“退出”按钮,其中包含以下推荐代码:
GIDSignIn.sharedInstance().signOut()然而,每次我第一次运行应用程序后,signIn进程就不再要求我提供密码。
如果我登录,然后按下我的注销按钮,下一次我按下登录按钮,我会被提示输入一个谷歌帐户,然后提示我允许访问谷歌驱动器。
如果我登录,然后退出应用程序而不按“退出”按钮,下次我按下“登录”按钮时,我将不会收到提示并完全登录。
这种行为似乎与谷歌关于其快速启动代码(https://developers.google.com/drive/v3/web/quickstart/ios?ver=swift)的声明一致:“授权信息存储在您的密钥链中,因此后续执行不会提示授权。”
也就是说,GIDSignIn.sharedInstance().signOut()退出命令似乎在Google的端(必须选择一个Google帐户并允许Google驱动器在下一次登录时访问)起作用,但在iOS端不起作用,因为iOS似乎已经保存了密码(大概在密钥链中),并且在我第一次登录时总是将它交给Google。
我看到了Google Sign Out iOS的帖子,比兰德拉建议在那里尝试
[GTMOAuth2ViewControllerTouch removeAuthFromKeychainForName:kKeychainItemName];要从iOS设备的密钥链中删除密码,请执行以下操作。
我还没有找到如何使用这个建议的办法。有人能解释一下如何删除用户使用Google SignIn输入的密码信息吗?(假设这是完全注销用户所需做的事情)。我在用斯威夫特。
通常,让密钥链记住谷歌的密码不会有什么问题,但这是一个收集研究数据的应用程序。研究对象将使用自己的iOS设备(iPhone)登录到实验室的Google帐户,因此我们不希望这个密码留在他们的密钥链中。
我们很感激你的帮助。
发布于 2020-05-25 02:50:11
在撰写这篇文章时,您可以使用以下内容:
Swift 5
GIDSignIn.sharedInstance()?.disconnect()断开当前用户与应用程序的连接,并撤消先前的身份验证。如果操作成功,OAuth 2.0令牌也将从密钥链中删除。
https://stackoverflow.com/questions/50184827
复制相似问题