開始使用 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. 設定專案

您可以在 Google API ConsoleFirebase 控制台中啟用 App Check。您不必在兩個位置都啟用這項功能,只要啟用其中一個即可。

Google API Console

如要為 iOS 用戶端順利啟用 App Check,必須符合下列規定:
  • 您必須為 iOS 用戶端指定團隊 ID。
  • 軟體包 ID 不得使用萬用字元,因為這可能會解析為多個應用程式。也就是說,軟體包 ID 不得包含星號 (*) 符號。
如要啟用 App Check,請在 iOS 用戶端的編輯檢視畫面中,開啟「透過 Firebase App Check 防止 OAuth 用戶端遭到濫用」切換按鈕。

啟用 App Check 後,您會在 OAuth 用戶端的編輯檢視畫面中,看到與用戶端 OAuth 要求相關的指標。您必須強制執行應用程式檢查,系統才會封鎖來自未經驗證來源的要求。指標監控頁面中的資訊有助於判斷開始強制執行的時間。

為 iOS 應用程式啟用 App Check 時,可能會看到與 App Check 功能相關的錯誤。如要修正這些錯誤,請嘗試下列做法:

  • 確認您指定的軟體包 ID 和團隊 ID 有效。
  • 確認您並未使用軟體包 ID 的萬用字元。

Firebase 控制台

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

    • 如果應用程式已使用 Firebase,請使用相同專案。

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

      另請參閱: Firebase 專案與 Google Cloud 的關係

  2. 如果尚未將 iOS 應用程式新增至 Firebase 專案,請使用 Firebase 主控台的「專案設定」頁面新增。

  3. 在 Firebase 控制台的「App Check」部分,為應用程式註冊透過 App Attest 供應商使用 App Check。

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

    如果用戶端未連結,App Check 頁面的「適用於 iOS 的 Google Identity」部分會顯示「您有 n 個未連結的 OAuth 用戶端需要額外進行設定」訊息。

    此外,如果您在 App Check 中設定 OAuth 用戶端後刪除部分用戶端,系統會顯示「你有 n 項覆寫沒有相符的 OAuth 用戶端」訊息。您可以刪除這些覆寫項目,安全地進行清理。

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

2. 在應用程式中新增 Google 登入程式庫

  1. 在 Xcode 專案中,將 Google 登入依附元件設為 8.0.0 以上版本:

    策略合作夥伴經理

    googlesignin-ios 的依附元件規則設為 8.0.0 以上版本。

    CocoaPods

    更新 Podfile

    source 'https://github.com/CocoaPods/Specs.git'
    source 'https://github.com/firebase/SpecsDev.git'
    
    target 'YourAppName' do
      use_frameworks!
    
      pod 'GoogleSignIn','~> 8.0'
          :git => 'https://github.com/google/GoogleSignIn-iOS.git'
      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 通常不會歸類為有效的環境中執行應用程式,例如開發期間的模擬器,或是來自持續整合 (CI) 環境,可以建立應用程式的偵錯版本,使用 App Check 偵錯供應器,而非 App Attest。

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