ใช้ ARCore API ใน Google Cloud

เลือกแพลตฟอร์ม

คุณลักษณะของ ARCore เช่น ภูมิสารสนเทศ API และ Cloud Anchor ใช้ ARCore API โฮสต์บน Google Cloud เมื่อใช้ฟีเจอร์เหล่านี้ แอปพลิเคชันของคุณ ใช้ข้อมูลเข้าสู่ระบบเพื่อเข้าถึงบริการ ARCore API

การเริ่มต้นอย่างรวดเร็วนี้อธิบายวิธีการตั้งค่าแอปพลิเคชันของคุณเพื่อให้ สื่อสารกับบริการ ARCore API ที่โฮสต์ใน Google Cloud

สร้างโปรเจ็กต์ Google Cloud ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่

หากมีโปรเจ็กต์อยู่แล้ว ให้เลือกโปรเจ็กต์ดังกล่าว

ไปที่ตัวเลือกโปรเจ็กต์

หากยังไม่มีโปรเจ็กต์ Google Cloud ให้สร้างโปรเจ็กต์

สร้างโปรเจ็กต์ใหม่

เปิดใช้ ARCore API

หากต้องการใช้ ARCore API คุณต้องเปิดใช้ในโปรเจ็กต์ของคุณ

เปิดใช้ ARCore API

ตั้งค่าวิธีการให้สิทธิ์

แอปพลิเคชัน Unity สามารถสื่อสารกับ ARCore API โดยใช้ วิธีการให้สิทธิ์: การให้สิทธิ์แบบไม่ใช้คีย์ เมธอดที่แนะนำและการให้สิทธิ์คีย์ API

  • ใน Android การให้สิทธิ์แบบไม่ใช้คีย์จะใช้ชื่อแพ็กเกจของแอปพลิเคชันผสมกัน และลายนิ้วมือของคีย์ Signing เพื่อให้สิทธิ์แอปพลิเคชัน

    ใน iOS การให้สิทธิ์แบบไม่ใช้คีย์จะใช้โทเค็นที่รับรองเพื่อควบคุมการเข้าถึง API ช่วงเวลานี้ จะต้องมีเซิร์ฟเวอร์ที่คุณเป็นเจ้าของเพื่อลงนามโทเค็น และควบคุมการเข้าถึง API

  • คีย์ API คือสตริงที่ระบุโปรเจ็กต์ Google Cloud คีย์ API คือ มักไม่ถือว่าปลอดภัยเนื่องจากไคลเอ็นต์มักเข้าถึงได้ ลองใช้การให้สิทธิ์แบบไม่ใช้คีย์เพื่อสื่อสารกับ ARCore API

แบบไม่ใช้กุญแจ

หากต้องการให้สิทธิ์แอปโดยใช้การตรวจสอบสิทธิ์แบบไม่ใช้คีย์ ให้สร้างไคลเอ็นต์ OAuth 2.0 รหัส

ระบุลายนิ้วมือคีย์ Signing

รหัสไคลเอ็นต์ OAuth 2.0 ใช้ลายนิ้วมือคีย์ Signing ของแอปเพื่อระบุ แอป

วิธีรับลายนิ้วมือรับรองการแก้ไขข้อบกพร่อง

เมื่อเรียกใช้หรือแก้ไขข้อบกพร่องของโครงการ เครื่องมือ Android SDK จะลงชื่อโดยอัตโนมัติ แอปด้วยใบรับรองการแก้ไขข้อบกพร่องที่สร้างขึ้น

ใช้คำสั่งต่อไปนี้เพื่อรับลายนิ้วมือของใบรับรองการแก้ไขข้อบกพร่อง

Mac/Linux
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
หน้าต่าง
keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

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

   Certificate fingerprint: SHA1: <strong>DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09

วิธีรับลายนิ้วมือรับรองจากคีย์สโตร์

หากมีไฟล์คีย์สโตร์ ให้ใช้ยูทิลิตี keytool เพื่อระบุลายนิ้วมือ

keytool -list -v -alias your-key-name -keystore path-to-production-keystore

จากนั้นยูทิลิตี keytool จะพิมพ์ลายนิ้วมือไปยังเครื่องชำระเงิน เช่น

   Certificate fingerprint: SHA1: DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09

วิธีรับคีย์ Signing ของแอปจาก Play App Signing

เมื่อใช้ Play App Signing Google จัดการคีย์ Signing ของแอปและใช้คีย์นี้เพื่อรับรอง APK ควรใช้คีย์นี้สำหรับลายนิ้วมือรับรอง

  1. ในหน้า App Signing ของ Google Play Console ให้เลื่อนไปที่ใบรับรองคีย์ App Signing
  2. ใช้ลายนิ้วมือสำหรับใบรับรอง SHA-1

สร้างรหัสไคลเอ็นต์ OAuth 2.0

สำหรับคีย์ Signing ที่เกี่ยวข้องแต่ละรายการจากขั้นตอนก่อนหน้า ให้สร้างรหัสไคลเอ็นต์ OAuth 2.0 ใน ข้อมูลเข้าสู่ระบบของโปรเจ็กต์ Google Cloud

  • เปิดหน้าข้อมูลเข้าสู่ระบบใน Google Cloud

    ข้อมูลเข้าสู่ระบบ

  • คลิกสร้างข้อมูลเข้าสู่ระบบ แล้วเลือกรหัสไคลเอ็นต์ OAuth จากเมนู

  • กรอกข้อมูลในช่องที่ต้องกรอกดังต่อไปนี้

    • ประเภทแอปพลิเคชัน: เลือก Android
    • ชื่อแพ็กเกจ: ใช้ชื่อแพ็กเกจตามที่ประกาศไว้ใน AndroidManifest.xml
    • ลายนิ้วมือสำหรับใบรับรอง SHA-1: ใช้ลายนิ้วมือที่ได้รับจากขั้นตอนก่อนหน้า
  • กดสร้าง

รวมไลบรารีที่จำเป็น

  1. รวม com.google.android.gms:play-services-auth:16+ ในทรัพยากร Dependency ของแอป
  2. หากคุณใช้การลดขนาดโค้ด เพิ่มลงในไฟล์ build.gradle ของแอป

    buildTypes {
      release {
        ...
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
      }
    }
    
  3. เพิ่มโค้ดต่อไปนี้ลงในไฟล์ proguard-rules.pro ของแอป

    -keep class com.google.android.gms.common.** { *; }
    -keep class com.google.android.gms.location.** { *; }
    -keep class com.google.android.gms.auth.** { *; }
    -keep class com.google.android.gms.tasks.** { *; }
    

กำหนดค่าแอปให้ใช้การตรวจสอบสิทธิ์แบบไม่ใช้คีย์แล้ว

แบบไม่ใช้กุญแจ

ARCore สนับสนุนการให้สิทธิ์การเรียก API ใน iOS โดยใช้ (JSON Web โทเค็น) โทเค็นต้องมีการรับรองโดย Google บัญชีบริการ

หากต้องการสร้างโทเค็นสำหรับ iOS คุณต้องมีปลายทางในเซิร์ฟเวอร์ ซึ่งเป็นไปตามข้อกำหนดต่อไปนี้

  • กลไกการให้สิทธิ์ของคุณเองต้องปกป้องปลายทาง

  • โดยปลายทางต้องสร้างโทเค็นใหม่ทุกครั้ง เช่น

    • โดยผู้ใช้แต่ละคนจะได้รับโทเค็นที่ไม่ซ้ำกัน
    • โทเค็นไม่มีวันหมดอายุในทันที

สร้างบัญชีบริการและคีย์ Signing

ทำตามขั้นตอนต่อไปนี้เพื่อสร้างบัญชีบริการของ Google และคีย์ Signing

  1. เปิดหน้าข้อมูลเข้าสู่ระบบใน Google Cloud
    ข้อมูลเข้าสู่ระบบ
  2. คลิกสร้างข้อมูลเข้าสู่ระบบ > บัญชีบริการ
  3. ในส่วนรายละเอียดบัญชีบริการ ให้พิมพ์ชื่อสำหรับบัญชีใหม่แล้วคลิก สร้าง
  4. ในหน้าสิทธิ์ของบัญชีบริการ ให้ไปที่เมนูแบบเลื่อนลงเลือกบทบาท เลือกบัญชีบริการ > Service Account Token Creator จากนั้นคลิก "ดำเนินการต่อ"
  5. คลิกเสร็จสิ้นในหน้าให้สิทธิ์ผู้ใช้เข้าถึงบัญชีบริการนี้
  6. ในหน้าข้อมูลเข้าสู่ระบบ ค้นหาส่วนบัญชีบริการและคลิกชื่อบัญชี ที่คุณเพิ่งสร้างขึ้น
  7. ในหน้ารายละเอียดบัญชีบริการ ให้เลื่อนลงไปที่ส่วน "คีย์" และ เลือกเพิ่มคีย์ > สร้างคีย์ใหม่
  8. เลือก JSON เป็นประเภทคีย์แล้วคลิกสร้าง

    ซึ่งจะดาวน์โหลดไฟล์ JSON ที่มีคีย์ส่วนตัวไปยังเครื่องของคุณ ร้านค้า ไฟล์คีย์ JSON ที่ดาวน์โหลดในตำแหน่งที่ปลอดภัยแล้ว

สร้างโทเค็นบนเซิร์ฟเวอร์

หากต้องการสร้างโทเค็นใหม่ (JWT) บนเซิร์ฟเวอร์ ให้ใช้ JWT มาตรฐาน ห้องสมุด และไฟล์ JSON ที่คุณดาวน์โหลดอย่างปลอดภัยจากบัญชีบริการใหม่

สร้างโทเค็นบนเครื่องสำหรับการพัฒนา

หากต้องการสร้าง JWT บนเครื่องการพัฒนา ให้ใช้รายการต่อไปนี้ คำสั่ง oauth2l

oauth2l fetch --cache "" --jwt --json $KEYFILE --audience "https://arcore.googleapis.com/"

จำเป็นต้องระบุตำแหน่งแคชที่ว่างเปล่าโดยใช้แฟล็ก --cache เพื่อ ตรวจสอบว่ามีการสร้างโทเค็นที่แตกต่างกันทุกครั้ง อย่าลืมตัด สตริงผลลัพธ์ การเว้นวรรคหรืออักขระขึ้นบรรทัดใหม่จะทำให้ API ปฏิเสธโทเค็น

ลงนามโทเค็น

คุณต้องใช้อัลกอริทึม RS256 และการอ้างสิทธิ์ต่อไปนี้เพื่อลงนามใน JWT

  • iss — อีเมลบัญชีบริการ
  • sub — อีเมลบัญชีบริการ
  • iat — เวลา Unix Epoch ที่สร้างโทเค็นในหน่วยวินาที
  • expiat + 3600 (1 ชั่วโมง) เวลา Unix Epoch เมื่อโทเค็นหมดอายุ ในหน่วยวินาที
  • aud — กลุ่มเป้าหมาย ต้องตั้งค่าเป็น https://arcore.googleapis.com/

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

หากคุณใช้วิธีอื่นในการสร้าง JWT เช่น การใช้ ตรวจสอบให้แน่ใจว่าได้ลงนามใน JWT ที่มีการอ้างสิทธิ์ในสภาพแวดล้อมที่ Google จัดการแล้ว ในส่วนนี้ สิ่งสำคัญที่สุดคือควรตรวจสอบว่ากลุ่มเป้าหมายถูกต้อง

ส่งโทเค็นในเซสชัน ARCore

  1. ตรวจสอบว่าได้ตั้งค่ากลยุทธ์การตรวจสอบสิทธิ์ iOS เป็น AuthenticationToken ใน Unity ให้ไปที่แก้ไข > การตั้งค่าโปรเจ็กต์ > การจัดการปลั๊กอิน XR > ส่วนขยาย ARCore ในรายการแบบเลื่อนลงกลยุทธ์การตรวจสอบสิทธิ์ iOS เลือกตัวเลือก Authentication Token
  2. เมื่อได้รับโทเค็นแล้ว ให้ส่งไปที่เซสชัน ARCore โดยใช้ ARAnchorManager.SetAuthToken():

    // Designate the token to authorize ARCore API calls
    // on the iOS platform. This should be called each time the application's token is refreshed.
    ARAnchorManager.SetAuthToken(authToken);
    

กำหนดค่าแอปให้ใช้การตรวจสอบสิทธิ์แบบไม่ใช้คีย์แล้ว

โปรดทราบสิ่งต่อไปนี้เมื่อคุณส่งโทเค็นไปยังเซสชัน

  • หากคุณใช้คีย์ API เพื่อสร้างเซสชัน ARCore จะไม่สนใจ โทเค็นและบันทึกข้อผิดพลาด

    หากคุณไม่จำเป็นต้องใช้คีย์ API แล้ว ให้ลบคีย์ใน Google Developers คอนโซล แล้วนำออกจาก แอป

  • โดย ARCore จะไม่สนใจโทเค็นที่มีการเว้นวรรคหรือสัญลักษณ์พิเศษ

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

คีย์ API

  1. เปิดหน้าข้อมูลเข้าสู่ระบบใน Google Cloud
    ข้อมูลเข้าสู่ระบบ
  2. คลิกสร้างข้อมูลเข้าสู่ระบบ แล้วเลือกคีย์ API จากเมนู
    กล่องโต้ตอบการสร้างคีย์ API จะแสดงสตริงสำหรับคีย์ที่สร้างขึ้นใหม่
  3. ใน Unity ให้ไปที่แก้ไข > การตั้งค่าโปรเจ็กต์ > การจัดการปลั๊กอิน XR > ส่วนขยาย ARCore สำหรับแต่ละแพลตฟอร์มเป้าหมาย (Android, iOS) เมนูแบบเลื่อนลง Authentication Strategy เลือกตัวเลือก API Key จากนั้นให้ทำดังนี้ ใส่คีย์ API ของคุณในช่องคีย์ API

  4. อ่านเอกสารประกอบเกี่ยวกับข้อจำกัดของคีย์ API เพื่อรักษาความปลอดภัยคีย์ API

แอปของคุณกําหนดค่าให้ใช้คีย์ API แล้ว

ขั้นตอนถัดไป

เมื่อกำหนดค่าการให้สิทธิ์แล้ว ลองดูฟีเจอร์ของ ARCore ต่อไปนี้ที่ใช้ ดังนี้