Google 不用 CocoaPods 登录

Google SignIn without CocoaPods

我正在尝试将 iOS 的 GoogleSign-In 与此处找到的文档集成:https://developers.google.com/identity/sign-in/ios/start-integrating

如何在不使用 Cocoapods 的情况下执行此操作?

我试过使用 Cocoapods 直接下载的库和 headers,但这导致了很多问题。 有人成功地将 Cocoapod 转换为独立的 library/framework 吗?

现在可以在此处获得独立 SDK:https://developers.google.com/identity/sign-in/ios/sdk/

如其他博主所述,必须添加以下依赖框架:

  • AddressBook.framework
  • StoreKit.framework
  • SystemConfiguration.framework

您可能还需要在项目的构建步骤中设置 Other Linker Flags: -ObjC 标志。

还要确保 link 依赖框架。

  • AddressBook.framework
  • StoreKit.framework
  • SystemConfiguration.framework

查看相关内容

在与这个野兽搏斗了一周之后,我想更新版本 Google Sign-In SDK 4.0.0 的这个答案。

处的说明

https://developers.google.com/identity/sign-in/ios/sdk/

对于版本 4.0.0 似乎是错误的。他们说你只需要 link

  • GoogleSignIn.framework
  • GoogleSignIn.bundle

(当然还有 AddressBook.frameworkStoreKit.frameworkSystemConfiguration.framework)。然而,你会得到很多迷惑

Undefined symbols for architecture x86_64

错误,如果这就是您所包含的全部内容。 CHANGELOG.md 文件通过以下声明让您更接近真相:

For users of the stand-alone zip distribution, multiple frameworks are now provided and all need to be added to a project. This decomposition allows more flexibility in case of duplicated dependencies.

所以实际上你需要包括:

  • GoogleAppUtilities.framework
  • GoogleAuthUtilities.framework
  • GoogleNetworkingUtilities.framework
  • GoogleSymbolUtilities.framework
  • GoogleUtilities.framework

所以现在你应该是金色的,对吧?正如所有优秀的电视广告所说...

等等,还有更多!

需要包括

  • libz.tbd

This 答案也提供了包含该库的线索。否则,您将收到错误

unrecognized selector sent to instance

但只在这行代码上

GIDSignIn.sharedInstance().clientID = "MyClientID"

如果您注释掉该行,代码将正常工作,即使该代码仍然存在

GIDSignIn.sharedInstance().delegate = self

对我来说,这是最具误导性的部分。网络上针对该错误的大多数答案都会说您需要将 OtherLinkerFlag 设置为 -ObjC,而且我敢肯定,如果设置不正确或根本没有设置,这是问题的常见原因,但是在我的例子中,它显然设置正确,加上委托的设置有效,这意味着可以设置 GIDSignIn 的其他属性,那么为什么不设置 clientID?我想也许我的 clientID 不知何故是错误的,我浪费了很多时间来追寻那个错误的线索。

仅使用 CocoaPod 就可以避免所有这些令人头疼的问题,但就我而言,我真的想让它工作而不增加 CocoaPods 带来的复杂性,因为我还包括了 Facebook 的 SDK。

P.S。我找到了这个教程

http://www.appcoda.com/google-sign-in-how-to/

比 Google 的教程写得更好,特别是提醒您需要使用 UIView 而不是 UIButton 作为 Google 登录按钮。在看到本教程之前,我花了一些时间对为什么不能将按钮的 class 设置为 GIDSignInButton 感到困惑。请记住,您需要按照我上面描述的方式 link 库,而不是教程所说的方式,因为现在不同了。

他们更新了文档:

https://developers.google.com/identity/sign-in/ios/start-integrating#swift-package-manager

在 Xcode 中打开您的项目。

将 Google Sign-In 依赖项添加到您的应用(Xcode 文档):

存储库https://github.com/google/GoogleSignIn-iOS 版本 6.0.2 打包产品 Google登录

如果您使用的是 SwiftUI,还请为“使用 Google 登录”按钮添加以下扩展包产品:

打包产品GoogleSignInSwift