ใช้ ARCore API ใน Google Cloud

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

ฟีเจอร์ของ ARCore เช่น Geospatial 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 ได้โดยใช้วิธีการให้สิทธิ์ 2 แบบ ได้แก่ การให้สิทธิ์คีย์ซึ่งเป็นวิธีที่แนะนำและการให้สิทธิ์คีย์ API

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

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

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

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

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

ระบุลายนิ้วมือที่สำคัญของการลงชื่อ

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

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

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

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

Mac/Linux
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Windows
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

สำหรับคีย์การลงนามที่เกี่ยวข้องแต่ละรายการจากขั้นตอนก่อนหน้า ให้สร้างรหัสไคลเอ็นต์ 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 Token) โดยโทเค็นต้องลงชื่อโดย บัญชีบริการของ Google

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

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

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

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

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

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

  1. เปิดหน้าข้อมูลเข้าสู่ระบบใน Google Cloud
    ข้อมูลเข้าสู่ระบบ
  2. คลิกสร้างข้อมูลเข้าสู่ระบบ > บัญชีบริการ
  3. ในส่วนรายละเอียดบัญชีบริการ ให้พิมพ์ชื่อของบัญชีใหม่ แล้วคลิกสร้าง
  4. ในหน้าสิทธิ์ของบัญชีบริการ ให้ไปที่เมนูแบบเลื่อนลงเลือกบทบาท เลือกบัญชีบริการ > ผู้สร้างโทเค็นบัญชีบริการ จากนั้นคลิกดำเนินการต่อ
  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 เช่น การใช้ Google API ในสภาพแวดล้อมที่จัดการโดย Google โปรดอย่าลืมลงนาม JWT ด้วยการอ้างสิทธิ์ในส่วนนี้ สิ่งแรกคือ ตรวจสอบว่าผู้ชมถูกต้อง

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

  1. ตรวจสอบว่าได้ตั้งค่ากลยุทธ์การตรวจสอบสิทธิ์ iOS เป็น AuthToken แล้ว ใน Unity ให้ไปที่แก้ไข > การตั้งค่าโปรเจ็กต์ > การจัดการปลั๊กอิน XR > ส่วนขยาย ARCore ในเมนูแบบเลื่อนลงกลยุทธ์การตรวจสอบสิทธิ์ iOS ให้เลือกตัวเลือกโทเค็นการตรวจสอบสิทธิ์
  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 Console และนำคีย์ดังกล่าวออกจากแอปของคุณ

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

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

คีย์ API

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

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

ตอนนี้แอปได้รับการกําหนดค่าให้ใช้คีย์ API แล้ว

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

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