swift - 如何实现 GoogleSignIn

标签 swift google-cloud-firestore google-signin

一些文档 1 2假设我必须使用 application:openURL:options:。我的问题是——因为我已经在使用该方法,并且如何实现的示例代码完全劫持了它:

func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
  -> Bool {
    return GIDSignIn.sharedInstance().handle(url,
                            sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
                            annotation: [:])
}

如何确定 openURL 调用是为了登录?

我宁愿实现与 FirebaseUI 中的方法等效的方法 3 :

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
  let sourceApplication = options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String?
  if FUIAuth.defaultAuthUI()?.handleOpen(url, sourceApplication: sourceApplication) ?? false {
    return true
  }
  // other URL handling goes here.
  return false
}

最佳答案

您可能已经注意到 GIDSignIn.sharedInstance().handle 方法返回一个 bool,因此您可以这样调用它:

func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
  -> Bool {
    if GIDSignIn.sharedInstance().handle(url, sourceApplication:options[.sourceApplication] as? String, annotation: [:]) {
        return true
    }

    return false
}  

如果您的应用支持其他不同类型的登录(facebook、twitter 等),这种方法会更有用
在这种情况下,您所要做的就是为每种 url 添加更多的 if 条件。
希望这有帮助

关于swift - 如何实现 GoogleSignIn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54984780/

相关文章:

ios - 是否有可能有一个符合相同协议(protocol)的结构数组也支持 Codable?

firebase - Flutter:无法使用静态访问访问实例成员 'signInWithGoogle'。 (static_access_to_instance_member 在)

firebase - 获取 Firestore 中的所有集合

javascript - 在渲染和登录后 react 谷歌登录触发错误

iOS 自定义分享扩展 : load selected image

ios - 无法加载资源:unsupported URL wkwebview-bridge://invoke

javascript - 如何将cloud firestore字段值传递给node js中的新变量?

android - 如何使用 Node 服务器验证 Android Google 登录

c# - C# 的快速启动示例应用程序不起作用。有想法吗?

Swift 3 - 为 HTTP 调用创建可重用的类