[英]Nest API 401 Response Error using RestSharp c#
我正在嘗試從Nest API獲取我的設備/結構數據的JSON響應。 “ https://developer-api.nest.com/ ”
我已經能夠使用具有相同URL的Postman檢索數據,而僅指定內容類型和授權標頭。 我實質上是將Postman的代碼片段復制到程序中,但是運行時收到401錯誤。
var client = new RestClient("https://developer-api.nest.com/");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "Bearer " + access_token);
request.AddHeader("content-type", "application/json");
IRestResponse response = client.Execute(request);
這是響應內容:
{"error":"unauthorized","type":"https://developer.nest.com/documentation/cloud/error-messages#auth-error","message":"unauthorized","instance":"e0a35869-6726-4192-85d5-d31482b28269"}
我是否需要以某種方式對access_token進行編碼?
感謝您的回復。
以下是輸出的樣例:
{
"devices": {
"thermostats": {
"fbk1Kr983gWp-eN-V9pxnOcTsTatUX5X": {
"humidity": 15,
"locale": "en-US",
"temperature_scale": "F",
...
找到了問題。
Nest API的初始響應(大部分時間)是重定向到其Firebase API服務器。 我通過添加以下if語句來處理重定向:
var client = new RestClient("https://developer-api.nest.com/");
client.FollowRedirects = false;
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "Bearer " + access_token);
request.AddHeader("content-type", "application/json");
IRestResponse response = client.Execute(request);
if (response.StatusCode == HttpStatusCode.RedirectKeepVerb) // 307
{
client.BaseUrl = new Uri(initial_response.Headers[7].Value.ToString());
response = client.Execute(request);
}
請注意,我將FollowRedirects屬性設置為false。 第二個響應內容包含預期的JSON數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.