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

您可以在 Firebase 主控台中啟用 App Check。您不必在兩個位置都啟用,只要在其中一個位置啟用即可。

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

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

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

  • 確認您指定的軟體包 ID 和團隊 ID 是否有效。
  • 確認您沒有在軟體包 ID 中使用萬用字元。

Firebase 控制台

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

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

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

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

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

  3. 在 Firebase 主控台的「App Check」專區中,為應用程式註冊透過 App Attest 供應商使用 App Check。

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

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

    此外,如果您在 App Check 中設定 OAuth 用戶端後刪除了部分用戶端,就會看到「You have n overrides with no matching OAuth client」訊息。您可以刪除這些覆寫值來安全地清理。

    您可以在 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 檔案中,將應用程式認證環境設為 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 通常不會歸類為有效的環境中執行應用程式,例如開發期間的模擬器,或從持續整合 (CI) 環境,您可以建立應用程式的偵錯版本,使用 App Check 偵錯提供者,而非 App Attest。

請參閱「使用 App Check 搭配偵錯提供者」。