我已使用身份验证实施了Google SignIn代码以访问Google云端硬盘,并且还有一个退出按钮,其中包含以下来自Google的推荐代码:
git diff
但是,每次第一次运行应用程序后,signIn进程都不再要求我输入密码。
如果我登录然后按下我的退出按钮,下次我按下登录按钮时系统会提示我输入谷歌帐户,然后提示您允许访问Google云端硬盘。
如果我在没有按下退出按钮的情况下登录并退出应用程序,则下次按下登录按钮时,我不会收到任何提示并完全登录。
此行为似乎与Google关于其快速入门代码(https://developers.google.com/drive/v3/web/quickstart/ios?ver=swift)的声明一致: "授权信息存储在您的钥匙串中,因此后续执行不会提示授权。"
这就是GIDSignIn.sharedInstance()。signOut()注销命令似乎适用于谷歌的终端(必须选择一个谷歌账户,并允许谷歌驱动器访问下次登录),但不是iOS结束,因为iOS已经保存了密码(可能是在钥匙串中),并且在我第一次登录后总是将其提供给Google。
我看到了比伦德拉建议尝试的Google Sign Out iOS帖子
git diff --full-index --binary HEAD test_branch binary_file_name.dat | git apply
从iOS设备的钥匙串中删除密码。
我没有运气找到如何使用该建议。有人可以解释如何删除用户使用Google SignIn输入的密码信息吗? (假设这是完全注销用户所需要做的)。我使用的是Swift。
通常让钥匙串记住Google的密码不会有问题,但这是一个收集研究数据的应用程序。受试者将使用他们自己的iOS设备(iPhone)并登录实验室的Google帐户,因此我们不希望该密码留在他们的钥匙串中。
非常感谢帮助。
答案 0 :(得分:0)
您可以尝试将其放入AppDelegate
func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
GIDSignIn.sharedInstance().signOut()
}
应用再次启动后,您可以检查用户的登录状态,并可以将用户重定向到登录屏幕。
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
//REDIRECT USER TO LOGIN SCREEN.
}
希望有帮助。
答案 1 :(得分:0)
截至本文发布时,您可以使用以下内容:
快捷键5
GIDSignIn.sharedInstance()?.disconnect()
断开当前用户与该应用的连接并撤消之前的用户 身份验证。如果操作成功,则OAuth 2.0令牌也将 从钥匙串中删除。