谷歌登录不适用于iOS 10
我已经在我的项目中将谷歌登录不适用于iOS 10,ios,google-signin,swift4,ios10.3,Ios,Google Signin,Swift4,Ios10.3,我已经在我的项目中将googlesinapi与swift4.0集成。它在iOS 11.0上运行,但当我在iOS 10.0上测试时,它会在浏览器或设备上打开Safari登录页面,并在成功签名后打开Google搜索页面 当我点击下面显示的GoogleSignIn按钮时,它会打开如下图所示的浏览器 然后我填写凭证 成功登录后,它将重定向到Google页面,而不是应用程序页面 我在AppDelegate中使用了错误的处理程序 func application(_ app: UIApplication,
googlesinapi
与swift4.0
集成。它在iOS 11.0上运行,但当我在iOS 10.0上测试时,它会在浏览器或设备上打开Safari
登录页面,并在成功签名后打开Google
搜索页面
GoogleSignIn
按钮时,它会打开如下图所示的浏览器Google
页面,而不是应用程序页面我在
AppDelegate
中使用了错误的处理程序
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return GIDSignIn.sharedInstance().handle(url as URL!, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
}
之前我使用的是:
private func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool
但它应该是:
private func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool
检查您的
GIDSignInUIDelegate
,不要忘记
func sign(_ signIn: GIDSignIn!, present viewController: UIViewController!) {
self.present(viewController, animated: true, completion: nil)
}
func sign(_ signIn: GIDSignIn!, dismiss viewController: UIViewController!) {
self.dismiss(animated: true, completion: nil)
}
您必须在
AppDelegate
中实现此委托功能
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return GIDSignIn.sharedInstance().handle(url as URL!, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
}
谷歌文档真糟糕!我使用的是iOS 10,文档中说,只有在使用iOS 8.0或更高版本时,才添加我编写的第二个方法。不知道为什么。我成功地添加了这两种方法:
// [START openurl]
func application(_ application: UIApplication,
open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation)
}
// [END openurl]
@available(iOS 9.0, *)
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
return GIDSignIn.sharedInstance().handle(url,
sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
annotation: options[UIApplicationOpenURLOptionsKey.annotation])
}
-(BOOL)应用程序:(UIApplication*)应用程序
openURL:(NSURL*)url
选项:(NSDictionary*)选项{
BOOL handleGoogleSignIn=[[GIDSignIn sharedInstance]handleURL:url
sourceApplication:options[UIApplicationOpenUrlOptions SourceApplicationKey]
注释:选项[UIApplicationOpenURLOptionsAnnotationKey]];
if(手杖登录){
返回手柄;
}
}
-(BOOL)应用程序:(UIApplication*)应用程序
openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication
注释:(id)注释{
BOOL handleGoogleSignIn=[[GIDSignIn sharedInstance]handleURL:url
sourceApplication:sourceApplication
注释:注释];
if(手杖登录){
返回手柄;
}
}
如果您使用sourceApplication,则需要编写GoogleSignIn并返回两者。我也遇到了同样的问题,请务必在获得解决方案后通知我……您好,使用此方法,我可以通过谷歌登录。但在登录后,我想转到驱动器文件列表。它将我重定向到google.com。你能帮忙吗?