คุณลักษณะของ ARCore เช่น ภูมิสารสนเทศ API และ Cloud Anchor ใช้ ARCore API โฮสต์บน Google Cloud เมื่อใช้ฟีเจอร์เหล่านี้ แอปพลิเคชันของคุณ ใช้ข้อมูลเข้าสู่ระบบเพื่อเข้าถึงบริการ ARCore API
การเริ่มต้นอย่างรวดเร็วนี้อธิบายวิธีการตั้งค่าแอปพลิเคชันของคุณเพื่อให้ สื่อสารกับบริการ ARCore API ที่โฮสต์ใน Google Cloud
สร้างโปรเจ็กต์ Google Cloud ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่
หากมีโปรเจ็กต์อยู่แล้ว ให้เลือกโปรเจ็กต์ดังกล่าว
หากยังไม่มีโปรเจ็กต์ Google Cloud ให้สร้างโปรเจ็กต์
เปิดใช้ 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 จะลงชื่อโดยอัตโนมัติ แอปด้วยใบรับรองการแก้ไขข้อบกพร่องที่สร้างขึ้น
ใช้คำสั่งต่อไปนี้เพื่อรับลายนิ้วมือของใบรับรองการแก้ไขข้อบกพร่อง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 ควรใช้คีย์นี้สำหรับลายนิ้วมือรับรอง
- ในหน้า App Signing ของ Google Play Console ให้เลื่อนไปที่ใบรับรองคีย์ App Signing
- ใช้ลายนิ้วมือสำหรับใบรับรอง SHA-1
สร้างรหัสไคลเอ็นต์ OAuth 2.0
สำหรับคีย์ Signing ที่เกี่ยวข้องแต่ละรายการจากขั้นตอนก่อนหน้า ให้สร้างรหัสไคลเอ็นต์ OAuth 2.0 ใน ข้อมูลเข้าสู่ระบบของโปรเจ็กต์ Google Cloud
เปิดหน้าข้อมูลเข้าสู่ระบบใน Google Cloud
คลิกสร้างข้อมูลเข้าสู่ระบบ แล้วเลือกรหัสไคลเอ็นต์ OAuth จากเมนู
กรอกข้อมูลในช่องที่ต้องกรอกดังต่อไปนี้
- ประเภทแอปพลิเคชัน: เลือก Android
- ชื่อแพ็กเกจ: ใช้ชื่อแพ็กเกจตามที่ประกาศไว้ใน AndroidManifest.xml
- ลายนิ้วมือสำหรับใบรับรอง SHA-1: ใช้ลายนิ้วมือที่ได้รับจากขั้นตอนก่อนหน้า
กดสร้าง
รวมไลบรารีที่จำเป็น
- รวม
com.google.android.gms:play-services-auth:16+
ในทรัพยากร Dependency ของแอป หากคุณใช้การลดขนาดโค้ด เพิ่มลงในไฟล์
build.gradle
ของแอปbuildTypes { release { ... proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
เพิ่มโค้ดต่อไปนี้ลงในไฟล์
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
- เปิดหน้าข้อมูลเข้าสู่ระบบใน Google Cloud
ข้อมูลเข้าสู่ระบบ - คลิกสร้างข้อมูลเข้าสู่ระบบ > บัญชีบริการ
- ในส่วนรายละเอียดบัญชีบริการ ให้พิมพ์ชื่อสำหรับบัญชีใหม่แล้วคลิก สร้าง
- ในหน้าสิทธิ์ของบัญชีบริการ ให้ไปที่เมนูแบบเลื่อนลงเลือกบทบาท เลือกบัญชีบริการ > Service Account Token Creator จากนั้นคลิก "ดำเนินการต่อ"
- คลิกเสร็จสิ้นในหน้าให้สิทธิ์ผู้ใช้เข้าถึงบัญชีบริการนี้
- ในหน้าข้อมูลเข้าสู่ระบบ ค้นหาส่วนบัญชีบริการและคลิกชื่อบัญชี ที่คุณเพิ่งสร้างขึ้น
- ในหน้ารายละเอียดบัญชีบริการ ให้เลื่อนลงไปที่ส่วน "คีย์" และ เลือกเพิ่มคีย์ > สร้างคีย์ใหม่
เลือก 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 ที่สร้างโทเค็นในหน่วยวินาทีexp
—iat
+3600
(1 ชั่วโมง) เวลา Unix Epoch เมื่อโทเค็นหมดอายุ ในหน่วยวินาทีaud
— กลุ่มเป้าหมาย ต้องตั้งค่าเป็นhttps://arcore.googleapis.com/
คุณไม่จำเป็นต้องใช้การอ้างสิทธิ์ที่ไม่ใช่แบบมาตรฐานในเพย์โหลด JWT แต่คุณอาจพบว่า
การอ้างสิทธิ์ uid
มีประโยชน์ในการระบุผู้ใช้ที่เกี่ยวข้อง
หากคุณใช้วิธีอื่นในการสร้าง JWT เช่น การใช้ ตรวจสอบให้แน่ใจว่าได้ลงนามใน JWT ที่มีการอ้างสิทธิ์ในสภาพแวดล้อมที่ Google จัดการแล้ว ในส่วนนี้ สิ่งสำคัญที่สุดคือควรตรวจสอบว่ากลุ่มเป้าหมายถูกต้อง
ส่งโทเค็นในเซสชัน ARCore
- ตรวจสอบว่าได้ตั้งค่ากลยุทธ์การตรวจสอบสิทธิ์ iOS เป็น AuthenticationToken ใน Unity ให้ไปที่แก้ไข > การตั้งค่าโปรเจ็กต์ > การจัดการปลั๊กอิน XR > ส่วนขยาย ARCore ในรายการแบบเลื่อนลงกลยุทธ์การตรวจสอบสิทธิ์ iOS เลือกตัวเลือก Authentication Token
เมื่อได้รับโทเค็นแล้ว ให้ส่งไปที่เซสชัน 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
- เปิดหน้าข้อมูลเข้าสู่ระบบใน Google Cloud
ข้อมูลเข้าสู่ระบบ - คลิกสร้างข้อมูลเข้าสู่ระบบ แล้วเลือกคีย์ API จากเมนู
กล่องโต้ตอบการสร้างคีย์ API จะแสดงสตริงสำหรับคีย์ที่สร้างขึ้นใหม่ ใน Unity ให้ไปที่แก้ไข > การตั้งค่าโปรเจ็กต์ > การจัดการปลั๊กอิน XR > ส่วนขยาย ARCore สำหรับแต่ละแพลตฟอร์มเป้าหมาย (Android, iOS) เมนูแบบเลื่อนลง Authentication Strategy เลือกตัวเลือก API Key จากนั้นให้ทำดังนี้ ใส่คีย์ API ของคุณในช่องคีย์ API
- อ่านเอกสารประกอบเกี่ยวกับข้อจำกัดของคีย์ API เพื่อรักษาความปลอดภัยคีย์ API
แอปของคุณกําหนดค่าให้ใช้คีย์ API แล้ว
ขั้นตอนถัดไป
เมื่อกำหนดค่าการให้สิทธิ์แล้ว ลองดูฟีเจอร์ของ ARCore ต่อไปนี้ที่ใช้ ดังนี้