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 } } 

这似乎是我能弄明白的唯一方法。