授權

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透過 PCM 登入其 Google 帳戶。
  • user 會在 PCM 中選取要授予 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) 錯誤參考資料

在應用程式中新增 PCM

在應用程式中,使用下列網址新增 PCM 檢視畫面:

https://nestservices.google.com/partnerconnections

當 user 登入後,這個頁面會顯示所有已連結的Device Access developer,以及所有結構體和裝置的清單,並提供切換按鈕,可授予及撤銷權限。 user 也可以從這個頁面,依個別合作夥伴取消連結。

未經驗證的應用程式

SDM API 使用受限範圍,也就是說,如果未完成 OAuth API 驗證,在授權期間使用這個範圍的應用程式都會是「未經驗證」。如果您將 Device Access 用於個人用途,則不需要進行 OAuth API 驗證。

在授權程序中,您可能會看到「Google 尚未驗證此應用程式」畫面,這是因為您未在 Google Cloud 的 OAuth 同意畫面中設定 sdm.service 範圍。如要略過這個畫面,請按一下「進階」選項,然後點選「前往 專案名稱 (不安全)」

詳情請參閱未驗證的應用程式畫面

存取權杖

所有用於管理已授權結構體和裝置的 SDM API 呼叫,都必須使用user 在授權期間授予 developer 的專屬存取權杖。存取權杖只有短期使用,且必須定期更新以確保能持續存取。

如果 a user 稍後撤銷 developer 對結構體或裝置的存取權,存取權杖會立即到期且無法重新整理,developer 就無法再代表該 user呼叫 SDM API。

撤銷帳戶授權

取消授權 Google 帳戶的方式有很多種。我們建議使用者透過合作夥伴連線管理工具 (PCM) 修改帳戶權限。詳情請參閱「修改帳戶權限」。您也可以透過下列方法撤銷存取權杖:

  1. 使用者可以前往 https://myaccount.google.com/permissions 撤銷權限。

  2. 開發人員可以將存取權杖傳遞至端點 https://oauth2.googleapis.com/revoke。如要進一步瞭解 Google OAuth 和權杖撤銷,請參閱「撤銷權杖」。

嵌入式 WebView

新的安全瀏覽器政策禁止內嵌瀏覽器程式庫 (通常稱為內嵌 WebView) 中的 Google OAuth 要求。所有嵌入的 WebView 都會遭到封鎖。內嵌 WebView 程式庫會帶來問題,因為這類程式庫會讓不肖開發人員截取及變更 Google 與使用者之間的通訊內容。嵌入式 WebView 不僅會影響帳戶安全性,還可能影響應用程式的可用性。

如果您受到這項政策影響,請參閱「Google 針對內嵌 WebView 的 OAuth 2.0 授權端點即將實施的安全性異動」支援文章。