開始使用 App Check 搭配 iOS 裝置使用 Google 登入功能

本頁面說明如何在 iOS 應用程式中啟用 App Check。啟用 App Check 後,即可確保只有您的應用程式能代表您的專案存取 Google 的 OAuth 2.0 端點。請參閱這項功能的總覽

App Check 會使用 App Attest 協助驗證 OAuth 2.0 要求是否來自真實的應用程式。App Check 不會使用 App Attest 分析詐欺風險

事前準備

  1. 請確定您有 Xcode 12.5 以上版本。

  2. 使用 Google 登入程式庫,將 Google 登入整合至 iOS 應用程式。

1. 設定專案

  1. 您必須擁有 Firebase 專案,才能搭配 Google 登入功能使用 App Check。

    • 如果您的應用程式已使用 Firebase,請使用同一個專案。

    • 如果您的應用程式使用 Google 登入,但沒有使用 Firebase,表示您已經有 Google Cloud 專案。在 Firebase 控制台建立新專案時選取 Firebase,即可將 Firebase 新增至 Google Cloud 專案

    另請參閱:Firebase 專案和 Google Cloud 之間的關係

  2. 如果您尚未新增 iOS 應用程式,請透過 Firebase 控制台的「專案設定」頁面將 iOS 應用程式加入 Firebase 專案中。

  3. 在 Firebase 控制台的「App Check」區段中,註冊應用程式,以便透過 App Attest 供應商使用 App Check。

  4. 確認專案的所有 OAuth 用戶端皆已連結至應用程式。

    如果您已取消連結的用戶端,「App Check」頁面的「Google Identity for iOS」部分會顯示一則訊息,指出您有 n 個未連結的 OAuth 用戶端需要額外進行設定

    此外,如果您在 App Check 中設定部分 OAuth 用戶端後刪除了這些用戶端,系統會顯示「您有 n 覆寫沒有相符的 OAuth 用戶端」訊息。只要刪除這些覆寫值,就能安全地進行清除。

    您可以在 Firebase 控制台的「OAuth 用戶端」頁面中,將已取消連結的用戶端連結至現有或新的應用程式。

2. 將 Beta 版 Google 登入程式庫新增至應用程式

  1. 在 Xcode 專案中,將 Google 登入依附元件設為 7.1.0-fac-beta-1.1.0 版本:

    策略合作夥伴經理

    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 驗證端點提出的每項要求一起傳送,但在您在 Firebase 控制台的「App Check」區段啟用強制執行前,端點都不會要求權杖生效。

監控指標

不過,在啟用強制執行設定之前,您應確保這麼做不會中斷現有的合法使用者。另一方面,如果您發現應用程式資源有濫用的情況,可以提早啟用強制執行機制。

為此,您可以查看 Google 登入的 App Check 指標

啟用強制執行 App Check

當您瞭解 App Check 對使用者的影響,並準備好進行後續步驟時,就可以啟用 App Check 強制執行功能

在偵錯環境中使用 App Check

針對 App Check 註冊 App Check 後,如果您想在 App Check 通常不會歸類為有效的環境中執行應用程式,例如在開發期間使用模擬器,或是從持續整合 (CI) 環境中執行,您可以建立使用 App Check 偵錯提供者 (而非 App Attest) 的應用程式偵錯版本。

請參閱「將 App Check 與偵錯供應商搭配使用」。