使用 FirebaseUI 登录不会退出 webview 并抛出错误

Signing in using FirebaseUI doesn't back out of webview and throws error

我试图让用户按照 FirebaseUI 教程使用 Google 帐户登录。当我进入显示的浏览器 vc 时,我只是被带到 Google 主页并且从未登录过。唯一的选择是单击完成 returns 错误 Error Domain=com.google.GIDSignIn Code=-5 "The user canceled the sign-in flow." UserInfo={NSLocalizedDescription=The user canceled the sign-in flow.} 这真的很令人沮丧,并且支持我的整个团队,因为我们无法让 auth 工作,所以有人知道如何解决这个问题吗?

请注意,我使用的是 iOS9。我不确定这是否与此有关。

运行 与 Firecast 视频中的相同问题,您需要在 AppDelegate.swift

中添加回调
func application(application: UIApplication,
  openURL url: NSURL, options: [String: AnyObject]) -> Bool {
    return GIDSignIn.sharedInstance().handleURL(url,
        sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String,
        annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
}

引用https://firebase.google.com/docs/auth/ios/google-signin

我遇到了同样的问题。我同时使用 react-native-google-signinreact-native-fbsdk。在 react-native-google-signin 上找到了解决方案,指出了问题。

问题是 react-native-google-signin 与 AppDelegate.m 中的 facebook sdk 冲突。

要解决此问题,请按如下方式编辑 AppDelegate.m:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {

  if ([url.scheme hasPrefix:@"fb"]) {
    return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                          openURL:url
                                                sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                                       annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
            ];


  }else{
    return [[GIDSignIn sharedInstance] handleURL:url
                               sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                      annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];


      }
}

这个解决方案对我有用。

对于Swift 4

func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {

if (url.scheme?.hasPrefix("fb"))! {
   return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, options: options) 
}
else{
   return GIDSignIn.sharedInstance().handle(url,sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,annotation: [:])
   }
}