Developer可以透過 SDM API 代表 user查看及管理 Google Nest 裝置。SDM API 會驗證 user 是否管理要存取的裝置、 user 是否已同意developer 讀取或寫入每個裝置的特徵,以及developer 是否已列入許可清單,可存取每個特徵。
如要使用 SDM API 管理裝置,developer 必須先獲得 user授權。
如需授權程序的逐步說明,請參閱 Device Access 快速入門指南的「授權帳戶」頁面。
如需授權錯誤的疑難排解說明,請參閱「授權錯誤」。
OAuth 流程
SDM API 使用三足式 Google OAuth 流程進行user 授權:
- 當 a user 想要授權 a developer 管理 Nest 裝置時, developer 會將 user 傳送至 PCM, user登入 Google 帳戶。
- 在 PCM 中選取要授予的權限。 user developer
- user 會透過 OAuth 提供同意聲明,並授予developer 授權碼。
- developer 會使用授權碼擷取存取權杖。
- developer 會使用存取權杖呼叫 SDM API,管理裝置。
如要進一步瞭解 Google OAuth 和設定方式,請參閱「使用 OAuth 2.0 存取 Google API」。
合作夥伴連線管理工具 (PCM)
PCM 由 SDM API 提供。這個檢視畫面會列出user 可授予 developer的所有住家、裝置和存取權選項。 user會在授權程序中選擇要授予的存取權,並保留該存取權的控制權。
在 PCM 中選取的選項會對應至特徵群組,也就是 developer 可存取的特徵集合。視developer 提供給 user的整合類型而定,部分特徵群組會連結在一起, user必須授予這些連結特徵群組的權限,才能啟用該整合功能。否則,使用者可以視需要授予個別未連結特徵群組的權限。
啟用 PCM
如要為 user啟用 PCM 檢視畫面,請將標準 Google API OAuth 2.0 端點替換為授權要求的新 OAuth 端點:
https://nestservices.google.com/partnerconnections/project-id/auth在網址中使用下列參數:
| 參數 | 說明 |
|---|---|
redirect_uri |
授權成功後,要將 user 導向的 URI。 |
client_id |
Google Cloud 專案的 OAuth 2.0 用戶端 ID。 請確認這組號碼與 Project ID 相關聯。 請注意,OAuth 用戶端 ID 必須有效,且專屬於 project,不得與其他 project共用。 |
access_type |
要使用的值:offline |
prompt |
要使用的值:consent |
response_type |
要使用的值:code系統應會傳回授權碼。 |
scope |
要使用的值:https://www.googleapis.com/auth/sdm.service
SDM API 範圍。 |
state |
選填。 developer 用戶端使用的不透明值,用於在要求和回呼之間維持狀態。 |
PCM 網址範例:
https://nestservices.google.com/partnerconnections/
2f6989ca-c756-4625-8cdc-d5b1edfb2dcd/auth?
redirect_uri=https://www.example.com/api/link/M258KP8OWYZDVQ&
client_id=418235700063-sdkiav89orn5r1nvrcr5t210qqjimq8l.apps.googleusercontent.com&
access_type=offline&
prompt=consent&
response_type=code&
scope=https://www.googleapis.com/auth/sdm.service user 授予權限後,授權碼會以重新導向 URI 中的 code 參數形式傳回。使用這個代碼取得存取權杖。
將 PCM 新增至應用程式
在應用程式中,使用下列網址新增 PCM 檢視畫面:
https://nestservices.google.com/partnerconnectionsuser 登入後,這個頁面會顯示所有已連結的Device Access developer,以及所有結構和裝置的清單,並提供切換鈕,方便使用者授予和撤銷權限。 user 也可以從這個頁面逐一取消連結合作夥伴。
未經驗證的應用程式
SDM API 使用受限制的範圍,因此除非完成 OAuth API 驗證,否則在授權期間使用這個範圍的任何應用程式都會「未經驗證」。如果 Device Access 僅供個人使用,則無須進行 OAuth API 驗證。
授權程序期間,您可能會看到「Google 尚未驗證這個應用程式」畫面,這是因為您在 Google Cloud 的 OAuth 同意畫面中,未設定 sdm.service 範圍。如要略過這個畫面,請按一下「進階」選項,然後按一下「前往『專案名稱』(不安全)」。
詳情請參閱「未驗證的應用程式畫面」。
存取權杖
所有對 SDM API 的呼叫,都必須使用 developer 在授權期間授予user 的專屬存取權杖,才能管理已授權的結構和裝置。存取權杖的效期有限,必須定期更新才能確保存取權。
如果 a user 稍後撤銷 developer 住家或裝置的存取權,存取權杖會立即失效且無法重新整理,developer 將無法再代表該 user呼叫 SDM API。
撤銷帳戶授權
取消授權 Google 帳戶的方法有很多種。建議使用者透過合作夥伴連線管理工具 (PCM) 修改帳戶權限。詳情請參閱「修改帳戶權限」。您也可以透過下列方法撤銷存取權杖:
使用者可以前往 https://myaccount.google.com/permissions 撤銷存取權。
開發人員可以將存取權杖傳遞至端點
https://oauth2.googleapis.com/revoke。如要進一步瞭解 Google OAuth 和權杖撤銷,請參閱「撤銷權杖」。
嵌入式網頁檢視畫面
新的安全瀏覽器政策禁止在內嵌瀏覽器程式庫 (一般稱為內嵌 WebView) 中提出 Google OAuth 要求。所有嵌入的網頁檢視區塊都會遭到封鎖。內嵌 WebView 程式庫會造成問題,因為惡意開發人員可藉此攔截及變更 Google 與使用者之間的通訊內容。內嵌 WebView 不僅會影響帳戶安全性,也可能影響應用程式的可用性。
如果這項政策會影響您,請參閱「內嵌 WebView 中 Google OAuth 2.0 授權端點即將進行的安全性異動」支援文章。