谷歌登录不适用于 iOS 10
Posted
技术标签:
【中文标题】谷歌登录不适用于 iOS 10【英文标题】:Google SignIn not working for iOS 10 【发布时间】:2018-03-21 17:58:02 【问题描述】:我已将GoogleSinIn API
与Swift 4.0
集成到我的项目中。它正在ios 11.0
上运行,但是当我在iOS 10.0
上进行相同测试时,它会在Safari
浏览器或设备上打开Google
登录页面,并在成功签名后打开Google
搜索页面.
当我点击下面显示的GoogleSignIn
按钮时,它会打开下一张图片中显示的浏览器。
然后我填写凭据。
登录成功后,重定向到Google
页面,而不是应用页面。
【问题讨论】:
我也遇到了同样的问题,当你得到解决方案时请告诉我... 【参考方案1】:你必须在你的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])
【讨论】:
【参考方案2】:检查你的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)
【讨论】:
嗨,用这种方法我可以谷歌登录。但登录后,我想去驱动器文件列表。它正在将我重定向到 google.com 。你能帮忙吗?【参考方案3】:Google 文档很烂!我正在使用 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])
【讨论】:
【参考方案4】:我在 AppDelegate
中使用了错误的处理程序。
我之前使用的是:
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
【讨论】:
【参考方案5】:- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
BOOL handleGoogleSignIn = [[GIDSignIn sharedInstance] handleURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
if (handleGoogleSignIn)
return handleGoogleSignIn;
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
BOOL handleGoogleSignIn = [[GIDSignIn sharedInstance] handleURL:url
sourceApplication:sourceApplication
annotation:annotation];
if (handleGoogleSignIn)
return handleGoogleSignIn;
如果你使用 sourceApplication ,你需要写 GoogleSignIn return both。
【讨论】:
以上是关于谷歌登录不适用于 iOS 10的主要内容,如果未能解决你的问题,请参考以下文章
谷歌登录不适用于 Play Store 上的生产 apk。(在 Playstore 上发布 apk)
通过 Facebook 登录不适用于我的 iOS 应用程序 [重复]