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.framework
、StoreKit.framework
和 SystemConfiguration.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
我正在尝试将 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.framework
、StoreKit.framework
和 SystemConfiguration.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