我正在尝试实现使用 Cocoapods 安装的新 Google SignIn 库。部署目标是 8.4,我在 9.0.2 设备中进行测试。
1-我有正确的 plist 文件,其中包含 clientID 和 reverseID
2- 我已设置 URL 类型
3- 我将 AppDelegate 作为 GIDSignIn [GIDSignIn sharedInstance].delegate = self;
的委托(delegate),并实现了正确的委托(delegate)方法来捕获回调 - (void)signIn:( GID登录 *)登录
didSignInForUser:(GIDGoogleUser *)用户
withError:(NSError *)错误
4- 我有 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication 注释:(id)注释
{返回[[GIDSignIn共享实例]handleURL:url
源应用程序:源应用程序
注释:注释];
}
5-我使用自动 GIDSignInButton 类并放置在 UIViewController 的子类中,因此我不需要实现 GIDSignIn uiDelegate 方法。但我仍然在 viewDidLoad 中设置了 [[GIDSignIn sharedInstance] setUiDelegate:self];
6-我在链接库中有 SFSafariViewController.framework。
7-我从未手动将 clientID 设置为 GIDSignIn,因为这不是 google 官方文档中的说明的一部分。尽管很多人一直这样做,但我不知道为什么。
问题:一旦我按下登录按钮,就会出现一个 SFSafariViewController,我选择我想要使用的帐户(请注意,即使我安装了多个应用程序,它也不会从我的应用程序进入任何其他谷歌应用程序进行身份验证)。权限已显示,我看到我在 Google 开发者控制台中配置的应用程序的名称和 Logo ,我接受权限。 SFSafariViewController 回退到“www.google.com”,仅此而已。关闭此屏幕的唯一方法是点击右上角的“确定”按钮,然后点击 - (void)signIn:(GIDSignIn *)signIn
didSignInForUser:(GIDGoogleUser *)用户
withError:(NSError *)error
被调用,错误提示所使用的已取消登录过程。
最佳答案
解决掉就好了。当您使用 CocoaPods 时,似乎您必须设置
swift :
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation)
}
对象-c
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation];
}
在你的appDelegate中。现在,在接受权限后,您将被重定向到您的应用程序。
更多信息:https://developers.google.com/identity/sign-in/ios/sign-in
关于ios - Google SignIn SFSafariViewController/WebView 在接受权限后重定向到 Google.com,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33907831/