ARCore 功能 (例如 Geospatial API 和 Cloud Anchors) 會使用 Google Cloud 上託管的 ARCore API。使用這些功能時,應用程式會使用憑證存取 ARCore API 服務。
本快速入門導覽課程說明如何設定應用程式,以便與 Google Cloud 上代管的 ARCore API 服務通訊。
建立新的 Google Cloud 專案,或使用現有專案
如有現有專案,請選取該專案。
如果您沒有現有的 Google Cloud 雲端專案,請建立一個。
啟用 ARCore API
如要使用 ARCore API,必須在專案中啟用這項 API。
設定授權方法
Unity 應用程式可使用兩種不同的授權方法與 ARCore API 通訊:無金鑰授權 (建議使用的方法) 和 API 金鑰授權:
在 Android 上,免金鑰授權會使用應用程式的套件名稱和簽署金鑰的指紋組合,授權您的應用程式。
在 iOS 上,無金鑰授權會使用已簽署的權杖來控管 API 存取權。這個方法需要您擁有的伺服器簽署權杖,並控管 API 存取權。
API 金鑰是識別 Google Cloud 專案的字串,API 金鑰通常可供用戶端存取,因此一般不視為安全。建議使用免金鑰授權與 ARCore API 通訊。
免鑰
如要使用無金鑰驗證授權應用程式,請建立 OAuth 2.0 用戶端 ID。
判斷簽署金鑰指紋
OAuth 2.0 用戶端 ID 會使用應用程式的簽署金鑰指紋來識別應用程式。
如何取得偵錯簽署指紋
執行專案或處理相關偵錯工作時,Android SDK 工具會使用產生的偵錯憑證,自動簽署您的應用程式。
使用下列指令取得偵錯憑證指紋。keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
keytool 公用程式會提示您輸入 Keystore 密碼。偵錯 KeyStore 的預設密碼為 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-keystorekeytool 公用程式接著會在終端機列印指紋。例如:
Certificate fingerprint: SHA1: DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09
如何從 Play 應用程式簽署功能取得應用程式的簽署金鑰
使用 Play 應用程式簽署功能時, Google 會管理應用程式的簽署金鑰,並使用該金鑰簽署 APK。 這組金鑰應做為簽署指紋使用。
建立 OAuth 2.0 用戶端 ID
針對上一個步驟中的每個適用簽署金鑰,在 Google Cloud 專案的憑證中建立 OAuth 2.0 用戶端 ID。
在 Google Cloud 中開啟「憑證」頁面。
按一下「建立憑證」,然後從選單中選取「OAuth 用戶端 ID」。
按照下方指示填寫必填欄位:
- 應用程式類型:選擇「Android」。
- 套件名稱:使用 AndroidManifest.xml 中宣告的套件名稱。
- SHA-1 憑證指紋:使用先前步驟取得的指紋。
按下「建立」。
包含必要程式庫
- 在應用程式的依附元件中加入
com.google.android.gms:play-services-auth:16+。 如果您使用程式碼縮減,請將程式碼新增至應用程式的
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 支援使用 (JSON Web Token) 授權 iOS 中的 API 呼叫。權杖必須由 Google 服務帳戶簽署。
如要為 iOS 產生權杖,伺服器必須具備符合下列條件的端點:
您必須使用自己的授權機制保護端點。
端點每次都必須產生新權杖,因此:
- 每位使用者都有一個專屬權杖。
- 權杖不會立即失效。
建立服務帳戶和簽署金鑰
請按照下列步驟建立 Google 服務帳戶和簽署金鑰:
- 在 Google Cloud 中開啟「憑證」頁面。
憑證 - 依序按一下「建立憑證」>「服務帳戶」。
- 在「Service account details」(服務帳戶詳細資料) 下方,輸入新帳戶的名稱,然後按一下「Create」(建立)。
- 在「服務帳戶權限」頁面,前往「選取角色」下拉式選單。 選取「服務帳戶」>「服務帳戶權杖建立者」,然後按一下「繼續」。
- 在「將這個服務帳戶的存取權授予使用者」頁面中,按一下「完成」。
- 在「憑證」頁面中找到「服務帳戶」部分,然後點選您剛才建立的帳戶名稱。
- 在「服務帳戶詳細資料」頁面中,向下捲動至「金鑰」部分,然後依序選取「新增金鑰」>「建立新的金鑰」。
選取「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 紀元時間 (以秒為單位)。exp-iat+3600(1 小時)。權杖到期的 Unix Epoch 時間 (以秒為單位)。aud- 目標對象。必須設為https://arcore.googleapis.com/。
JWT 酬載中不需要非標準聲明,但您可能會發現 uid 聲明有助於識別對應的使用者。
如果您使用其他方法產生 JWT,例如在 Google 管理的環境中使用 Google API,請務必使用本節中的憑證附加資訊簽署 JWT。最重要的是,請確認目標對象正確無誤。
在 ARCore 工作階段中傳遞權杖
- 確認「iOS 驗證策略」已設為「AuthenticationToken」。在 Unity 中,依序前往「Edit」 >「Project Settings」 >「XR Plug-in Management」 >「ARCore Extensions」。在「iOS Authentication Strategy」(iOS 驗證策略) 下拉式選單中,選取「Authentication Token」(驗證權杖) 選項。
取得權杖後,請使用
ARAnchorManager.SetAuthToken()將權杖傳遞至 ARCore 工作階段:// 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 中,依序前往「Edit」>「Project Settings」>「XR Plug-in Management」>「ARCore Extensions」。針對每個目標平台 (Android、iOS),在「Authentication Strategy」(驗證策略) 下拉式選單中,選取「API Key」(API 金鑰) 選項。然後在 API 金鑰欄位中插入 API 金鑰。
- 請參閱 API 金鑰限制說明文件,確保 API 金鑰安全無虞。
您的應用程式現已設定為使用 API 金鑰。
後續步驟
設定授權後,請查看下列使用授權的 ARCore 功能: