เริ่มต้นใช้งาน 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 ได้ใน Google API Console หรือในคอนโซล Firebase คุณไม่จำเป็นต้องเปิดใช้ในทั้ง 2 แห่ง เพียงแห่งเดียวก็เพียงพอ

Google API Console

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

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

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

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

คอนโซล Firebase

  1. คุณต้องมีโปรเจ็กต์ Firebase เพื่อใช้ App Check กับ การลงชื่อเข้าใช้ด้วย Google

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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