Notice: We're retiring Works with Nest. See the home page for more information.
Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

授權參考

授權碼請求

根據請求類型,我們實現不同的代碼長度和TTL(生存時間)值:

TTL 碼長
網頁 10分鐘 16個字符
48小時 8個字符

參量

Nest API支持的授權參數為:

名稱類型需要描述
client_id 在OAuth客戶端頁面上可用。
redirect_uri 沒有如果為您的客戶端配置了多個重定向URI,請使用此選項指定所需的重定向URI。忽略它以使用您的默認重定向URI。

不要redirect_uri參數本身中包含任何其他參數,它應該與為您的客戶端配置的重定向URI完全匹配。
state 使用此選項指定不可猜測的值來對抗CSRF攻擊 。否則,請使用默認值STATE

基於PIN的授權錯誤消息

在基於PIN的授權碼請求期間,可以向用戶顯示以下錯誤消息:

用戶錯誤信息說明
缺少客戶端ID或狀態參數。 授權URL缺少client_idstate參數,或兩者都缺失。確保傳遞的授權URL完整且準確。
糟糕!我們遇到了一個錯誤。請再試一遍。 發生此錯誤的原因如下:
  • Nest服務已關閉。等待直到Nest服務恢復。
  • 給定的client_id沒有客戶端。確保傳遞的授權URL使用正確的client_id
當前無法連接到公司名稱 。請聯繫Nest以獲取更多信息。 客戶端已超出用戶配額。提交您的客戶以進行審核以添加更多用戶。

重定向基於URI的授權錯誤響應

對於所有響應,content-type: application/json

缺少必需的參數

細節
HTTP狀態碼 400錯誤的要求
身體 {
"error":"oauth2_error",
"error_description":"missing required parameters: PARAM_NAME "
}
說明 授權代碼請求中缺少必需的參數PARAM_NAME

redirect_uri未預先註冊

細節
HTTP狀態碼 400錯誤的要求
身體 {
"error":"input_data_error",
"error_description":"redirect_uri not pre-registered"
}
說明 訪問令牌請求中使用的redirect_uri參數與為您的客戶端配置的任何重定向URI不匹配。

訪問令牌請求

我們建議您遵守此OAuth標準 ,該標准通過在請求正文中包含客戶端憑據來提高安全性。標頭中具有客戶端憑據的呼叫將繼續起作用,但不建議這樣做。

訪問令牌請求採用HTTP POST請求的形式。

參量

名稱類型需要描述
code 客戶同意授予您的應用訪問Nest數據的權限後傳遞的授權代碼。此值由成功的授權代碼請求提供。

了解如何設置授權
client_id 在OAuth客戶端頁面上可用。
client_secret 在OAuth客戶端頁面上可用;也可以稱為應用程序密鑰。
grant_type 必須為以下字符串: authorization_code

響應

對於所有響應,內容類型: application/json

HTTP狀態碼描述身體
200 OK 返回訪問令牌。在對Nest服務的調用中使用訪問令牌。 LONG是令牌過期之前的秒數。 {
"access_token":"STRING",
"expires_in":LONG
}

訪問令牌生存期

我們不支持刷新令牌 ,因為訪問令牌實際上不會過期。有關基於Web和基於PIN的授權流程的更多信息,請參見授權概述

訪問令牌錯誤響應

對於所有響應,content-type: application/json

授權碼已過期

細節
HTTP狀態碼 400錯誤的要求
身體 {
"error":"oauth2_error",
"error_description":"authorization code expired"
}
說明 授權碼已過期。需要新的授權碼來請求訪問令牌。

找不到授權碼

細節
HTTP狀態碼 400錯誤的要求
身體 {
"error":"oauth2_error",
"error_description":"authorization code not found"
}
說明 code參數無效。檢查您使用的授權碼是否正確。

客戶端未激活

細節
HTTP狀態碼 403禁止
身體 {
"error":"client_not_active",
"error_description":"client is not active"
}
說明 檢查您使用的參數是否正確。如果參數正確,並且僅對某些授權方法會發生錯誤(例如,使用Postman成功進行授權,但未使用Curl進行授權),則語法可能存在問題。

如果您的客戶端被停用,也會發生此錯誤。

找不到客戶機密

細節
HTTP狀態碼 400錯誤的要求
身體 {
"error":"oauth2_error",
"error_description":"client secret not found"
}
說明 client_secret參數無效。檢查您使用的是正確的client_secret值。

缺少必需的參數

細節
HTTP狀態碼 400錯誤的要求
身體 {
"error":"oauth2_error",
"error_description":"missing required parameters: PARAM_NAME "
}
說明 訪問令牌請求中缺少必需的參數PARAM_NAME

redirect_uri不允許

細節
HTTP狀態碼 400錯誤的要求
身體 {
"error":"input_error",
"error_description":"redirect_uri not allowed"
}
說明 在訪問令牌請求中使用了redirect_uri參數。