เลือกแพลตฟอร์ม: Android iOS JavaScript

ใช้ App Check เพื่อรักษาความปลอดภัยคีย์ API

Firebase App Check ช่วยปกป้องการเรียกจากแอปไปยัง Google Maps Platform โดยบล็อกการเข้าชมที่มาจากแหล่งที่มาอื่นๆ นอกเหนือจากแอปที่ถูกต้อง โดยจะตรวจสอบโทเค็นจากผู้ให้บริการการรับรอง เช่น App Attest การผสานรวมแอปกับ App Check จะช่วยป้องกันคำขอที่เป็นอันตราย เพื่อไม่ให้คุณถูกเรียกเก็บเงินสำหรับการเรียก API ที่ไม่ได้รับอนุญาต

App Check เหมาะกับฉันไหม

เราแนะนำให้ใช้ App Check ในกรณีส่วนใหญ่ แต่ไม่จำเป็นต้องใช้หรือระบบไม่รองรับในกรณีต่อไปนี้

  • คุณใช้ Places SDK เดิม App Check รองรับเฉพาะ Places SDK (ใหม่)
  • แอปส่วนตัวหรือแอปทดลอง หากแอปไม่สามารถเข้าถึงได้แบบสาธารณะ ก็ไม่จำเป็นต้องใช้ App Check
  • หากใช้แอปแบบเซิร์ฟเวอร์ถึงเซิร์ฟเวอร์เท่านั้น ก็ไม่จำเป็นต้องใช้ App Check อย่างไรก็ตาม หากไคลเอ็นต์สาธารณะ (เช่น แอปบนอุปกรณ์เคลื่อนที่) ใช้เซิร์ฟเวอร์ที่สื่อสารกับ GMP ให้พิจารณาใช้ App Check เพื่อปกป้องเซิร์ฟเวอร์นั้นแทน GMP
  • ผู้ให้บริการการรับรองที่เราแนะนำอย่าง Device Check หรือ App Attest จะไม่ทำงานในอุปกรณ์ที่ผู้ให้บริการการรับรองพิจารณาว่าถูกบุกรุกหรือไม่น่าเชื่อถือ หากต้องการรองรับอุปกรณ์ดังกล่าว คุณสามารถติดตั้งใช้งานบริการการรับรองที่กำหนดเองได้ ดูข้อมูลเพิ่มเติมได้ในวิธีการ

ภาพรวมขั้นตอนการติดตั้งใช้งาน

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

  1. เพิ่ม Firebase ลงในแอป
  2. เพิ่มและเริ่มต้นใช้งานไลบรารี App Check
  3. เพิ่มผู้ให้บริการโทเค็นลงในแอป
  4. เริ่มต้นใช้งาน Places API และ App Check API
  5. เปิดใช้การแก้ไขข้อบกพร่อง
  6. ตรวจสอบคำขอของแอปและตัดสินใจเกี่ยวกับการบังคับใช้

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

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

ข้อควรพิจารณาเมื่อวางแผนการผสานรวม App Check

สิ่งที่คุณควรพิจารณาเมื่อวางแผนการผสานรวมมีดังนี้

  • ผู้ให้บริการการรับรองที่เราแนะนำอย่าง Device Check หรือ App Attest มีโควต้าและข้อจำกัดที่ Apple กำหนด

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

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

    ระยะเวลาที่โทเค็น App Check ใช้งานได้ (Time to Live หรือ TTL) จะกำหนดความถี่ของการรับรองซ้ำ คุณกำหนดค่าระยะเวลานี้ได้ในคอนโซล Firebase การรับรองซ้ำจะเกิดขึ้นเมื่อ TTL ผ่านไปประมาณครึ่งหนึ่ง ดูข้อมูลเพิ่มเติมได้ในเอกสาร Firebaseสำหรับผู้ให้บริการการรับรอง

ผสานรวมแอปกับ App Check

ข้อกำหนดเบื้องต้นและข้อกำหนด

  • แอปที่ติดตั้ง Places SDK เวอร์ชัน 9.2 ขึ้นไป
  • รหัสชุดของแอป
  • รหัสทีมจาก Apple Member Center ในส่วนการเป็นสมาชิก
  • หากวางแผนที่จะใช้ Device Check ให้เตรียมไฟล์คีย์ส่วนตัวและรหัสคีย์
  • คุณต้องเป็นเจ้าของแอปใน Cloud Console
  • คุณจะต้องใช้รหัสโปรเจ็กต์ของแอปจาก Cloud Console

ขั้นตอนที่ 1: เพิ่ม Firebase ลงในแอป

ทำตามวิธีการในเอกสารประกอบสำหรับนักพัฒนาแอป Firebase เพื่อเพิ่ม Firebase ลงในแอป

เมื่อลงทะเบียนแอป คุณจะได้รับไฟล์การกำหนดค่า GoogleService-Info.plist เพิ่มไฟล์นี้ลงในระดับรากของแอปโดยไม่แก้ไข

Places Swift SDK สำหรับ iOS

import FirebaseCore
import FirebaseAppCheck
import GooglePlacesSwift

Swift

import FirebaseCore
import FirebaseAppCheck
import GooglePlaces

Objective-C

@import FirebaseCore;      
@import FirebaseAppCheck;
@import GooglePlaces;

ขั้นตอนที่ 2: เพิ่มไลบรารี App Check และเริ่มต้นใช้งาน App Check

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

  1. ทำตามวิธีการของ Firebase เพื่อเพิ่มไลบรารี App Check ดังนี้
  2. เริ่มต้นใช้งาน App Check
    • หากใช้ App Attest ให้ทำตามเอกสารประกอบสำหรับนักพัฒนาแอป Firebase สำหรับ App Attest

      ทำตามวิธีการของ Firebase App Check เพื่อสร้างการติดตั้งใช้งาน AppCheckProviderFactory และเพิ่มลงในไฟล์ AppDelegate

      Places Swift SDK สำหรับ iOS

      let providerFactory = YourAppCheckProviderFactory()
      AppCheck.setAppCheckProviderFactory(providerFactory)

      Swift

      let providerFactory = YourAppCheckProviderFactory()
      AppCheck.setAppCheckProviderFactory(providerFactory)

      Objective-C

      YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
         
    • หากใช้ Device Check ให้เพิ่มโค้ดต่อไปนี้ลงใน AppDelegate

      Places Swift SDK สำหรับ iOS

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Swift

      AppCheck.setAppCheckProviderFactory(DeviceCheckProviderFactory())

      Objective-C

      [FIRAppCheck setAppCheckProviderFactory:providerFactory];
            

ขั้นตอนที่ 3: เพิ่มผู้ให้บริการโทเค็น

สร้างไฟล์ชื่อ AppCheckTokenProvider (หรือหากใช้ Objective-C ให้สร้าง 2 ไฟล์ชื่อ AppCheckTokenProvider.h และ AppCheckTokenProvider.m) ที่ระดับรากของแอป เพิ่มคำสั่งนำเข้าและการกำหนดคลาสต่อไปนี้

Places Swift SDK สำหรับ iOS

// AppCheckTokenProvider.swift

import FirebaseAppCheck
import Foundation
import GooglePlacesSwift
      
struct TokenProvider: AppCheckTokenProvider {
  func fetchAppCheckToken() async throws -> String {
    return try await AppCheck.appCheck().token(forcingRefresh: false).token
  }
}
      

Swift

// AppCheckTokenProvider.swift

import FirebaseAppCheck
import Foundation
import GooglePlaces

class AppCheckTokenProvider: NSObject, GMSPlacesAppCheckTokenProvider {
  func fetchAppCheckToken() async throws -> String {
    return try await AppCheck.appCheck().token(forcingRefresh: false).token
  }
}

Objective-C

// AppCheckTokenProvider.h

@import Foundation;
@import GooglePlaces;

@interface AppCheckTokenProvider : NSObject <GMSPlacesAppCheckTokenProvider>
@end

// AppCheckTokenProvider.m

#import "AppCheckTokenProvider.h"

@import FirebaseAppCheck;

@implementation AppCheckTokenProvider

- (void)fetchAppCheckTokenWithCompletion:(nonnull GMSAppCheckTokenCompletion)completion {
  [[FIRAppCheck appCheck]
      tokenForcingRefresh:NO
               completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) {
                 if (token) {
                   completion(token.token, nil);
                 } else {
                   completion(nil, error);
                 }
               }];
}

@end

ขั้นตอนที่ 4: เริ่มต้นใช้งาน Places API และ App Check API

  1. เริ่มต้นใช้งาน Places API ในไฟล์ AppDelegate ดังนี้

    Places Swift SDK สำหรับ iOS

    PlacesClient.provideAPIKey("YOUR_API_KEY")

    Swift

    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    Objective-C

    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
  2. จากนั้นเริ่มต้นใช้งาน App Check API ดังนี้

    Places Swift SDK สำหรับ iOS

    PlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Swift

    GMSPlacesClient.setAppCheckTokenProvider(AppCheckTokenProvider())

    Objective-C

    [GMSPlacesClient setAppCheckTokenProvider:[[AppCheckTokenProvider alloc] init]];

ขั้นตอนที่ 5: เปิดใช้การแก้ไขข้อบกพร่อง (ไม่บังคับ)

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

วิธีทดสอบแอปใน Simulator หรือในอุปกรณ์ทดสอบ

  • สร้างและตั้งค่าโรงงานผู้ให้บริการการแก้ไขข้อบกพร่อง App Check

    ตัวอย่างโค้ดนี้จะจัดการทั้งสถานการณ์การแก้ไขข้อบกพร่องและการใช้งานจริง

    Places Swift SDK สำหรับ iOS

    #if targetEnvironment(simulator)
          let providerFactory = AppCheckDebugProviderFactory()
    #else
          let providerFactory = YourAppCheckProviderFactory()
    #endif

    Swift

    #if targetEnvironment(simulator)
          let providerFactory = AppCheckDebugProviderFactory()
    #else
          let providerFactory = YourAppCheckProviderFactory()
    #endif

    Objective-C

    if (targetEnvironment == simulator){
    
    FIRAppCheckDebugProviderFactory *providerFactory =
          [[FIRAppCheckDebugProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
    
    else {
    
    YourAppCheckProviderFactory *providerFactory =
          [[YourAppCheckProviderFactory alloc] init];
    [FIRAppCheck setAppCheckProviderFactory:providerFactory];
    }
        
  • เปิดใช้การบันทึกในโปรเจ็กต์ Xcode, เปิดแอป และค้นหาโทเค็นการแก้ไขข้อบกพร่องในเครื่องในบันทึก
  • เพิ่มโทเค็นนี้ลงในคอนโซล Firebase
  • ดูข้อมูลและวิธีการเพิ่มเติมได้ในเอกสารประกอบของ App Check

วิธีเรียกใช้แอปในสภาพแวดล้อม CI

  • สร้างโทเค็นการแก้ไขข้อบกพร่องในคอนโซล Firebase และเพิ่มโทเค็นลงในที่เก็บคีย์ที่ปลอดภัยของระบบ CI
  • ใน Xcode ให้เพิ่มตัวแปรสภาพแวดล้อมลงในสคีมาการทดสอบโดยใช้ชื่อ FIRAAppCheckDebugToken และ $(APP_CHECK_DEBUG_TOKEN) (หรือชื่อที่คล้ายกัน) เป็นค่า
  • ส่งโทเค็นการแก้ไขข้อบกพร่องเป็นสภาพแวดล้อมในสคริปต์การทดสอบ CI
  • สร้างและตั้งค่าโรงงานผู้ให้บริการการแก้ไขข้อบกพร่อง App Check

    ตัวอย่างโค้ดนี้จะจัดการทั้งสถานการณ์การแก้ไขข้อบกพร่องและการใช้งานจริง

    Places Swift SDK สำหรับ iOS

    #if DEBUG
      let providerFactory = AppCheckDebugProviderFactory()
    #else
      let providerFactory = YourAppCheckProviderFactory()
    #endif
    AppCheck.setAppCheckProviderFactory(providerFactory)
      

    Swift

    #if DEBUG
      let providerFactory = AppCheckDebugProviderFactory()
    #else
      let providerFactory = YourAppCheckProviderFactory()
    #endif
    AppCheck.setAppCheckProviderFactory(providerFactory)
      

    Objective-C

    #if DEBUG
    id<FIRAppCheckProviderFactory> providerFactory =
        [[FIRAppCheckDebugProviderFactory alloc] init];
    #else  // DEBUG
    id<FIRAppCheckProviderFactory> providerFactory =
        [[YourAppCheckProviderFactory alloc] init];
    #endif  // DEBUG
    AppCheck.setAppCheckProviderFactory(providerFactory)
  • ดูข้อมูลและวิธีการเพิ่มเติมได้ในเอกสารประกอบของ App Check

ขั้นตอนที่ 6: ตรวจสอบคำขอของแอปและตัดสินใจเกี่ยวกับการบังคับใช้

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

ดูข้อมูลและวิธีการเพิ่มเติมได้ในเอกสารประกอบของ Firebase App Check