เริ่มต้นใช้งาน 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 เข้ากับแอป iOS โดยใช้ ไลบรารีการลงชื่อเข้าใช้ด้วย Google

1. ตั้งค่าโปรเจ็กต์

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

คอนโซล Google API

คุณต้องมีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้จึงจะเปิดใช้ 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

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

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

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

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

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

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

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

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

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

2. เพิ่มไลบรารีการลงชื่อเข้าใช้ด้วย Google ลงในแอป

  1. ในโปรเจ็กต์ Xcode ให้ตั้งค่าทรัพยากร Dependency ของ 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 ให้เพิ่มความสามารถ 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 ของคอนโซล Firebase

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

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

คุณสามารถดู เมตริก App Check สำหรับการลงชื่อเข้าใช้ด้วย Google เพื่อช่วยในการตัดสินใจ

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

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

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

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

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