GoogleSignInSwiftSupport 8.0.0

GoogleSignInSwiftSupport 8.0.0

Peter AndrewsMatthew MathiasYana Sang 维护。



  • Google LLC

Version Platform License unit_tests integration_tests

适用于 iOS 和 macOS 的 Google Sign-In

快速且安全地将用户引入您的应用程序,使用他们已经使用且信任的注册系统——他们的 Google 账户。

访问我们的开发者网站以获取集成说明、文档、支持信息和服务条款。

开始使用

尝试以下之一的样本应用程序:Objective-CSwift。例如,为了展示 Objective-C 样本项目,您有两种选择

  1. 使用 CocoaPod 的 install 方法
git clone https://github.com/google/GoogleSignIn-iOS
cd GoogleSignIn-iOS/Samples/ObjC/SignInSample/
pod install
open SignInSampleForPod.xcworkspace
  1. 使用 Swift Package Manager
git clone https://github.com/google/GoogleSignIn-iOS
open GoogleSignIn-iOS/Samples/ObjC/SignInSample/SignInSample.xcodeproj

如果您想查看 Swift 示例,请查看 Samples/Swift/DaysUntilBirthday

  • 通过遵循我们的 入门指南,将 Google Sign-In 添加到您自己的应用程序中。
  • 查看 API 参考

macOS 上的 Google Sign-In

Google Sign-In 允许您的用户使用他们的 Google 账户和默认浏览器登录到您的原生 macOS 应用程序。在为 macOS 编译时,signInWithConfiguration:addScopes: 方法用 presentingWindow: 参数替换了 presentingViewController:。请注意,为了使您的 macOS 应用程序能够通过 Keychain 在 macOS 上存储凭证,您需要 对您的应用程序进行签名

Mac Catalyst

Google Sign-In 也支持通过 Mac Catalyst 构建的 iOS 应用程序。为了使您的 Mac Catalyst 应用程序能够通过 Keychain 在 macOS 上存储凭证,您需要 对您的应用程序进行签名

使用 Google 签名按钮

将“登录使用 Google”按钮添加到您的应用程序有几种方式,您选择哪种路径将取决于您的 UI 框架和目标平台。

SwiftUI(iOS 和 macOS)

在 SwiftUI 中创建一个“登录使用 Google”按钮可能就像这样

GoogleSignInButton {
  GIDSignIn.sharedInstance.signIn(withPresenting: yourViewController) { signInResult, error in
      // check `error`; do something with `signInResult`
  }
}

此示例利用初始化器的 默认参数。视图模型默认参数将使用浅色方案、标准按钮样式和正常按钮状态。您可以通过提供具有不同这些属性值的 GoogleSignInButtonViewModel 实例来自定义按钮。此便利初始化器提供了可以按需设置这些值的参数。

UIKit(iOS)

如果您不是使用 SwiftUI 构建用户界面,您可以选择以编程方式创建 GIDSignInButton,或者在 Xib/Storyboard 中创建。如果您正在编写程序性 UI 代码,它可能看起来是这样的:

let button = GIDSignInButton(frame: CGRect(<YOUR_RECT>))

AppKit (macOS)

由于 GIDSignInButton 是作为 UIControl 的子类实现的,因此它不可用于 macOS。您可以使用 SwiftUI Google 登录按钮代替。这样做需要将 SwiftUI 按钮包装在主视图中,以便在 AppKit 中使用。

let signInButton = GoogleSignInButton {
  GIDSignIn.sharedInstance.signIn(withPresenting: yourViewController) { signInResult, error in
      // check `error`; do something with `signInResult`
  }
}
let hostedButton = NSHostingView(rootView: signInButton)