使用入门:将 App Check 用于 Google 登录功能 (iOS)

本页介绍了如何在 iOS 应用中启用 App Check。启用应用后 确认一下,您的帮助确保只有您的应用可以访问 Google 的 OAuth 2.0 端点。查看此功能的概览

App Check 使用 App Attest 来帮助验证 OAuth 2.0 请求是否来自您的真实应用 App Check 不使用 App Attest 分析欺诈风险

准备工作

  1. 确保您使用的是 Xcode 12.5 或更高版本。

  2. 使用 Google 登录库

1. 设置项目

  1. 您必须拥有 Firebase 项目才能使用 App Check Google 登录。

    • 如果您的应用已在使用 Firebase,请使用同一项目。

    • 如果您的应用使用 Google 登录功能,而不是 Firebase,那么您已拥有 Google Cloud 项目。通过以下方式将 Firebase 添加到您的 Google Cloud 项目: 当您在 Firebase 控制台

    另请参阅: Firebase 项目与 Google Cloud 之间的关系

  2. 将您的 iOS 应用添加到您的 Firebase 项目(如果尚未添加) 使用 Firebase 控制台的项目设置页面。

  3. 在 Firebase 控制台的 App Check 部分。

  4. 确保您项目的所有 OAuth 客户端均已关联到某个应用。

    如果您已取消关联客户,则会在 Google Identity App Check 页面的 iOS 部分部分显示n已取消关联需要额外设置的 OAuth 客户端。

    此外,如果您在设置部分 OAuth 客户端后删除了这些客户端 您会在 App Check 中看到一条消息:You have n 替换项。您可以通过以下方式安全地清理文件: 来删除这些替换项。

    您可以将未关联的客户关联到 Firebase 控制台的 OAuth 客户端页面。

2. 将 Beta 版 Google 登录库添加到您的应用

  1. 在您的 Xcode 项目中,将 Google 登录依赖项设置为 version 7.1.0-fac-beta-1.1.0:

    SPM : 战略合作伙伴经理 (SPM)

    googlesignin-ios 的依赖项规则设置为确切版本: 7.1.0-fac-beta-1.1.0

    CocoaPods

    更新您的Podfile

    source 'https://github.com/CocoaPods/Specs.git'
    source 'https://github.com/firebase/SpecsDev.git'
    
    target 'YourAppName' do
      use_frameworks!
    
      pod 'GoogleSignIn',
          :git => 'https://github.com/google/GoogleSignIn-iOS.git',
          :tag => '7.1.0-fac-beta-1.1.0'
      pod 'GoogleSignInSwiftSupport'  # If you use SwiftUI.
    end
    

    然后,运行 pod install 并打开创建的 .xcworkspace 文件。

  2. 在 Xcode 中,将 App Attest 功能添加到您的应用中。

  3. 在项目的 .entitlements 文件中,将 App Attest 环境设置为 production

3. 初始化 App Check

在应用委托的 didFinishLaunchingWithOptions 方法中,调用 GIDSignIn.sharedInstance.configure(completion:)。您应该调用此方法 在应用的生命周期中尽早配置,以最大限度地缩短用户感知的延迟时间。

import SwiftUI
import GoogleSignIn

class AppDelegate: NSObject, UIApplicationDelegate {
  func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
  ) -> Bool {
    #if targetEnvironment(simulator)
    // Configure for debugging.
    // See: https://developers.google.com/identity/sign-in/ios/appcheck/debug-provider
    #else
    GIDSignIn.sharedInstance.configure { error in
      if let error {
        print("Error configuring `GIDSignIn` for Firebase App Check: \(error)")
      }
    }
    #endif

    return true
  }
}

@main
struct YourAppNameApp: App {
  @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

  // ...
}

后续步骤

将 App Check 库安装到您的应用中后,开始分发 向用户提供更新版应用。

更新后的客户端应用将开始发送 App Check 令牌以及 向 Google 身份验证端点发出的请求,但这些端点 在 App Check 中启用强制执行之前,要求令牌必须有效 部分。

监控指标

不过,在启用强制执行之前,您应确保这样做不会 干扰现有的合法用户。另一方面,如果您看到 可疑情形使用您的应用资源,您可能需要启用强制执行 加快实施速度。

为帮助做出此决定,您可以查看 Google 登录的 App Check 指标

启用 App Check 强制执行

在了解 App Check 对用户有何影响后,您已准备好 继续,您可以启用 App Check 强制执行

在调试环境中使用 App Check

如果您在为 App Check 注册应用后,想要运行该应用 在 App Check 通常无法归类为有效的环境中,例如 模拟器,或在持续集成 (CI) 环境中使用模拟器, 您可以创建使用 App Check 调试提供程序的应用的调试 build 而不是 App Attest。

请参阅将 App Check 与调试提供程序搭配使用