ฟีเจอร์ ARCore เช่น Geospatial API และ Cloud Anchors ใช้ ARCore API ที่โฮสต์ใน Google Cloud เมื่อใช้ฟีเจอร์เหล่านี้ แอปพลิเคชันของคุณ จะใช้ข้อมูลเข้าสู่ระบบเพื่อเข้าถึงบริการ ARCore API
การเริ่มต้นอย่างรวดเร็วนี้อธิบายวิธีตั้งค่าแอปพลิเคชันเพื่อให้สื่อสารกับบริการ ARCore API ที่โฮสต์ใน Google Cloud ได้
สร้างโปรเจ็กต์ Google Cloud ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่
หากมีโปรเจ็กต์อยู่แล้ว ให้เลือกโปรเจ็กต์นั้น
หากไม่มีโปรเจ็กต์ Google Cloud อยู่แล้ว ให้สร้างโปรเจ็กต์
เปิดใช้ ARCore API
หากต้องการใช้ ARCore API คุณต้องเปิดใช้ในโปรเจ็กต์
ตั้งค่าวิธีการให้สิทธิ์
แอปพลิเคชัน Unity สามารถสื่อสารกับ ARCore API ได้โดยใช้วิธีการให้สิทธิ์ 2 แบบ ได้แก่ การให้สิทธิ์แบบไม่มีคีย์ ซึ่งเป็นวิธีที่แนะนำ และการให้สิทธิ์คีย์ API
ใน Android การให้สิทธิ์แบบไม่ใช้คีย์จะใช้การผสมผสานระหว่างชื่อแพ็กเกจของแอปพลิเคชัน และลายนิ้วมือของคีย์การลงนามเพื่อให้สิทธิ์แอปพลิเคชัน
ใน iOS การให้สิทธิ์แบบไม่ต้องใช้คีย์จะใช้โทเค็นที่ลงนามเพื่อควบคุมการเข้าถึง API วิธีนี้ต้องใช้เซิร์ฟเวอร์ที่คุณเป็นเจ้าของเพื่อลงนามโทเค็นและควบคุมการเข้าถึง API
คีย์ API คือสตริงที่ระบุโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google โดยทั่วไปแล้วคีย์ API จะไม่ถือว่าปลอดภัยเนื่องจากไคลเอ็นต์มักจะเข้าถึงได้ โปรดพิจารณาใช้การให้สิทธิ์แบบไม่มีคีย์เพื่อสื่อสารกับ ARCore API
ไม่ใช้กุญแจ
หากต้องการให้สิทธิ์แอปโดยใช้การตรวจสอบสิทธิ์แบบไม่มีคีย์ ให้สร้างรหัสไคลเอ็นต์ OAuth 2.0
กำหนดลายนิ้วมือของคีย์การลงชื่อ
รหัสไคลเอ็นต์ OAuth 2.0 ใช้ลายนิ้วมือของคีย์การลงนามของแอปเพื่อระบุแอปของคุณ
วิธีรับลายนิ้วมือสำหรับการลงนามการแก้ไขข้อบกพร่อง
เมื่อเรียกใช้หรือแก้ไขข้อบกพร่องของโปรเจ็กต์ เครื่องมือ 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
วิธีรับฟิงเกอร์ปรินต์สำหรับการลงนามจากคีย์สโตร์
หากมีไฟล์ Keystore ให้ใช้ยูทิลิตี 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
สำหรับคีย์การลงนามที่เกี่ยวข้องแต่ละรายการจากขั้นตอนก่อนหน้า ให้สร้างรหัสไคลเอ็นต์ 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 Token) โทเค็นต้องลงนามโดยบัญชีบริการของ Google
หากต้องการสร้างโทเค็นสำหรับ iOS คุณต้องมีปลายทางในเซิร์ฟเวอร์ที่มีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้
กลไกการให้สิทธิ์ของคุณเองต้องปกป้องปลายทาง
ปลายทางต้องสร้างโทเค็นใหม่ทุกครั้ง โดยมีลักษณะดังนี้
- ผู้ใช้แต่ละรายจะได้รับโทเค็นที่ไม่ซ้ำกัน
- โทเค็นจะไม่หมดอายุทันที
สร้างบัญชีบริการและคีย์การลงนาม
ทำตามขั้นตอนต่อไปนี้เพื่อสร้างบัญชีบริการของ Google และคีย์การลงนาม
- เปิดหน้า "ข้อมูลเข้าสู่ระบบ" ใน Google Cloud
ข้อมูลเข้าสู่ระบบ - คลิกสร้างข้อมูลเข้าสู่ระบบ > บัญชีบริการ
- ในส่วนรายละเอียดบัญชีบริการ ให้พิมพ์ชื่อบัญชีใหม่ แล้วคลิกสร้าง
- ในหน้าสิทธิ์ของบัญชีบริการ ให้ไปที่เมนูแบบเลื่อนลงเลือกบทบาท เลือกบัญชีบริการ > ผู้สร้างโทเค็นบัญชีบริการ แล้วคลิก ต่อไป
- ในหน้าให้สิทธิ์ผู้ใช้เข้าถึงบัญชีบริการนี้ ให้คลิกเสร็จสิ้น
- ในหน้าข้อมูลเข้าสู่ระบบ ให้ค้นหาส่วนบัญชีบริการ แล้วคลิกชื่อบัญชี ที่คุณเพิ่งสร้าง
- ในหน้ารายละเอียดบัญชีบริการ ให้เลื่อนลงไปที่ส่วนคีย์ แล้วเลือกเพิ่มคีย์ > สร้างคีย์ใหม่
เลือก 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— เวลา Epoch ของ Unix เมื่อสร้างโทเค็นในหน่วยวินาทีexp—iat+3600(1 ชั่วโมง) เวลา Unix Epoch เมื่อโทเค็นหมดอายุ เป็นวินาทีaud— กลุ่มเป้าหมาย ต้องตั้งค่าเป็นhttps://arcore.googleapis.com/
คุณไม่จำเป็นต้องระบุการอ้างสิทธิ์ที่ไม่เป็นไปตามมาตรฐานในเพย์โหลด JWT แต่คุณอาจเห็นว่าการอ้างสิทธิ์ uid มีประโยชน์ในการระบุผู้ใช้ที่เกี่ยวข้อง
หากคุณใช้วิธีอื่นในการสร้าง JWT เช่น ใช้ Google API ในสภาพแวดล้อมที่ Google จัดการ โปรดตรวจสอบว่าได้ลงนาม JWT ด้วยการอ้างสิทธิ์ ในส่วนนี้ เหนือสิ่งอื่นใด ตรวจสอบว่ากลุ่มเป้าหมายถูกต้อง
ส่งโทเค็นในเซสชัน ARCore
- ตรวจสอบว่าได้ตั้งค่ากลยุทธ์การตรวจสอบสิทธิ์ iOS เป็น โทเค็นการตรวจสอบสิทธิ์ ใน Unity ให้ไปที่แก้ไข > การตั้งค่าโปรเจ็กต์ > การจัดการปลั๊กอิน XR > ส่วนขยาย ARCore ในเมนูแบบเลื่อนลงกลยุทธ์การตรวจสอบสิทธิ์ iOS ให้เลือกตัวเลือกโทเค็นการตรวจสอบสิทธิ์
เมื่อได้รับโทเค็นแล้ว ให้ส่งไปยังเซสชัน 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
- เปิดหน้า "ข้อมูลเข้าสู่ระบบ" ใน Google Cloud
ข้อมูลเข้าสู่ระบบ - คลิกสร้างข้อมูลเข้าสู่ระบบ แล้วเลือกคีย์ API จากเมนู
กล่องโต้ตอบสร้างคีย์ API จะแสดงสตริงสำหรับคีย์ที่สร้างขึ้นใหม่ ใน Unity ให้ไปที่แก้ไข > การตั้งค่าโปรเจ็กต์ > การจัดการปลั๊กอิน XR > ส่วนขยาย ARCore สำหรับแต่ละแพลตฟอร์มเป้าหมาย (Android, iOS) ให้เลือกตัวเลือกคีย์ API ในเมนูแบบเลื่อนลงกลยุทธ์การตรวจสอบสิทธิ์ จากนั้น ใส่คีย์ API ในช่องคีย์ API
- อ่านเอกสารประกอบเกี่ยวกับการจำกัดคีย์ API เพื่อรักษาคีย์ API ให้ปลอดภัย
ตอนนี้แอปได้รับการกำหนดค่าให้ใช้คีย์ API แล้ว
ขั้นตอนถัดไป
เมื่อกำหนดค่าการให้สิทธิ์แล้ว ให้ดูฟีเจอร์ ARCore ต่อไปนี้ที่ใช้