เริ่มต้นใช้งาน App Check สำหรับ Google Sign-In ใน iOS

หน้านี้จะแสดงวิธีเปิดใช้ App Check ในแอป iOS เมื่อเปิดใช้ App Check จะเป็นการช่วยให้มั่นใจว่ามีเพียงแอปของคุณเท่านั้นที่เข้าถึงปลายทาง OAuth 2.0 ของ Google ในนามของโปรเจ็กต์ได้ ดูภาพรวมของฟีเจอร์นี้

App Check ใช้ App Attest เพื่อช่วยยืนยันว่าคำขอ OAuth 2.0 มาจากแอปที่ถูกต้อง App Check ไม่ได้ใช้ App Attest เพื่อวิเคราะห์ความเสี่ยงที่เกิดจากการประพฤติมิชอบ

ก่อนเริ่มต้น

  1. ตรวจสอบว่าคุณมี Xcode 12.5 ขึ้นไป

  2. ผสานรวม Google Sign-In เข้ากับแอป iOS โดยใช้ไลบรารี Google Sign-In

1. สร้างโปรเจ็กต์

คุณเปิดใช้ App Check ได้ใน หรือในคอนโซล Firebase คุณไม่จำเป็นต้องเปิดใช้ในทั้ง 2 ที่ เพียงเปิดใช้ที่ใดที่หนึ่งก็เพียงพอแล้ว

คุณต้องปฏิบัติตามข้อกำหนดต่อไปนี้เพื่อเปิดใช้ App Check สําหรับไคลเอ็นต์ iOS ให้สําเร็จ
  • คุณต้องระบุรหัสทีมสำหรับไคลเอ็นต์ iOS
  • คุณต้องใช้ไวลด์การ์ดในรหัสกลุ่มไม่ได้เนื่องจากอาจนำไปใช้กับแอปได้มากกว่า 1 แอป ซึ่งหมายความว่ารหัสกลุ่มต้องไม่มีสัญลักษณ์เครื่องหมายดอกจัน (*)
หากต้องการเปิดใช้ App Check ให้เปิดปุ่มสลับปกป้องไคลเอ็นต์ OAuth จากการละเมิดด้วย Firebase App Check ในมุมมองแก้ไขของไคลเอ็นต์ iOS

หลังจากเปิดใช้ App Check แล้ว คุณจะเริ่มเห็นเมตริกที่เกี่ยวข้องกับคําขอ OAuth จากไคลเอ็นต์ในมุมมองแก้ไขของไคลเอ็นต์ OAuth ระบบจะไม่บล็อกคำขอจากแหล่งที่มาที่ไม่ได้รับการยืนยันจนกว่าคุณจะบังคับใช้ App Check ข้อมูลในหน้าการตรวจสอบเมตริกจะช่วยคุณกำหนดเวลาที่จะเริ่มการบังคับใช้

คุณอาจเห็นข้อผิดพลาดที่เกี่ยวข้องกับฟีเจอร์ App Check เมื่อเปิดใช้ App Check สําหรับแอป iOS หากต้องการแก้ไขข้อผิดพลาดเหล่านี้ ให้ลองทำดังนี้

  • ตรวจสอบว่ารหัสกลุ่มและรหัสทีมที่คุณระบุถูกต้อง
  • ตรวจสอบว่าคุณไม่ได้ใช้ไวลด์การ์ดสำหรับรหัสแพ็กเกจ

คอนโซล Firebase

  1. คุณต้องมีโปรเจ็กต์ Firebase จึงจะใช้ App Check กับ Google Sign-In ได้

    • หากแอปใช้ Firebase อยู่แล้ว ให้ใช้โปรเจ็กต์เดียวกัน

    • หากแอปใช้ Google Sign-In แต่ไม่ได้ใช้ Firebase แสดงว่าคุณมีโปรเจ็กต์ Google Cloud อยู่แล้ว เพิ่ม Firebase ไปยังโปรเจ็กต์ Google Cloud โดยเลือก Firebase เมื่อสร้างโปรเจ็กต์ใหม่ในคอนโซล Firebase

      ดูข้อมูลเพิ่มเติมได้ที่ความสัมพันธ์ระหว่างโปรเจ็กต์ Firebase กับ Google Cloud

  2. หากยังไม่ได้ดำเนินการ ให้เพิ่มแอป iOS ลงในโปรเจ็กต์ Firebase โดยใช้หน้าการตั้งค่าโปรเจ็กต์ของคอนโซล Firebase

  3. ลงทะเบียนแอปเพื่อใช้ App Check กับผู้ให้บริการ App Attest ในส่วน App Check ของคอนโซล Firebase

  4. ตรวจสอบว่าไคลเอ็นต์ OAuth ทั้งหมดของโปรเจ็กต์ลิงก์กับแอปแล้ว

    หากยกเลิกการลิงก์ไคลเอ็นต์ คุณจะเห็นข้อความในส่วนข้อมูลประจำตัวของ Google สำหรับ iOS ในหน้าการตรวจสอบแอปที่ระบุว่า "คุณมีnไคลเอ็นต์ OAuth ที่ยกเลิกการลิงก์แล้ว ซึ่งต้องมีการตั้งค่าเพิ่มเติม"

    นอกจากนี้ หากคุณลบไคลเอ็นต์ OAuth บางรายการออกหลังจากตั้งค่าใน App Check คุณจะเห็นข้อความว่า "คุณมีการลบล้าง n รายการที่ไม่มีไคลเอ็นต์ OAuth ที่ตรงกัน" คุณสามารถล้างข้อมูลได้อย่างปลอดภัยโดยลบการลบล้างเหล่านั้น

    คุณลิงก์ไคลเอ็นต์ที่ยกเลิกการลิงก์แล้วกับแอปที่มีอยู่หรือแอปใหม่ได้ในหน้าไคลเอ็นต์ OAuth ของคอนโซล Firebase

2. เพิ่มไลบรารี Google Sign-In ลงในแอป

  1. ในโปรเจ็กต์ Xcode ให้ตั้งค่าการพึ่งพา Google Sign-in เป็นเวอร์ชัน 8.0.0 ขึ้นไป ดังนี้

    SPM

    ตั้งค่ากฎการพึ่งพาของ 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 ให้เพิ่มความสามารถการรับรองแอปลงในแอป

  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 แต่ปลายทางจะไม่กำหนดให้โทเค็นต้องถูกต้องจนกว่าคุณจะเปิดใช้การบังคับใช้ในส่วน App Check ของคอนโซล Firebase

ตรวจสอบเมตริก

อย่างไรก็ตาม ก่อนที่จะเปิดใช้การบังคับใช้ คุณควรตรวจสอบว่าการดำเนินการดังกล่าวจะไม่รบกวนผู้ใช้ที่ถูกต้องตามกฎหมายที่มีอยู่ ในทางกลับกัน หากคุณเห็นการใช้ทรัพยากรแอปที่น่าสงสัย คุณอาจต้องเปิดใช้การบังคับใช้เร็วขึ้น

คุณดูเมตริก App Check สําหรับ Google Sign-in เพื่อช่วยในการตัดสินใจนี้ได้

เปิดใช้การบังคับใช้ App Check

เมื่อเข้าใจผลกระทบที่ App Check จะมีต่อผู้ใช้และพร้อมที่จะดำเนินการต่อแล้ว คุณสามารถเปิดใช้การบังคับใช้ App Check

ใช้ App Check ในสภาพแวดล้อมการแก้ไขข้อบกพร่อง

หากหลังจากลงทะเบียนแอปสำหรับ App Check แล้ว คุณต้องการเรียกใช้แอปในสภาพแวดล้อมที่ปกติแล้ว App Check จะไม่จัดประเภทว่าถูกต้อง เช่น เครื่องจำลองระหว่างการพัฒนา หรือจากสภาพแวดล้อมการผสานรวมอย่างต่อเนื่อง (CI) คุณสามารถสร้างบิลด์แก้ไขข้อบกพร่องของแอปที่ใช้ผู้ให้บริการแก้ไขข้อบกพร่องของ App Check แทน App Attest

โปรดดูหัวข้อใช้ App Check กับผู้ให้บริการแก้ไขข้อบกพร่อง