Google SignIn:无法断开iOS应用
我已经在iOS应用程序中实现了Google SignIn,并且可以第一次login到Google帐户。 但是,当我注销并尝试重新login时,我得到了账户权限屏幕,如下图所示,而不是SignIn屏幕。
以下是我用过的代码。
var signIn = GIDSignIn.sharedInstance() signIn.delegate = self signIn.uiDelegate = self
以下是注销和断开连接的代码
GIDSignIn.sharedInstance().signOut() GIDSignIn.sharedInstance().disconnect()
断开连接后,我再次尝试使用下面的代码login
GIDSignIn.sharedInstance().signIn()
注销和断开连接后,如何显示login屏幕?
我被困在这一段时间,我想出了一个很好的解决scheme。
看来GIDSignIn帐户列表使用的是Safari Web视图,因此其帐户logging使用的是Cookie /本地存储,并独立于iOS Keychain(和OAuth令牌)。
当用户点击注销我的应用程序时,我打开一个SFSafariViewController像这样:
import SafariServices class MyViewController: SFSafariViewControllerDelegate { ...
在您的button操作内(或者您想要将用户注销的位置):
let logoutUrl = URL(string: "https://www.google.com/accounts/Logout")! let logoutViewController = SFSafariViewController.init(url: logoutUrl) logoutViewController.delegate = self self.present(logoutViewController, animated: true, completion: nil)
在那里你实现了didCompleteInitialLoad
委托方法,并closures你的视图控制器,如下所示:
func safariViewController(_ controller: SFSafariViewController, didCompleteInitialLoad didLoadSuccessfully: Bool) { controller.dismiss(animated: false) { //Switch view controllers } }
这似乎是我能弄明白的唯一方法。