Nest API 401 响应错误使用 RestSharp c#

Nest API 401 Response Error using RestSharp c#

我正在尝试从 Nest API 获取对我的 devices/structures 数据的 JSON 响应。 “https://developer-api.nest.com/

我已经能够使用具有相同 url 的 Postman 检索数据,同时仅指定 content-type 和授权 headers。我实际上是将 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",
        ...

找到问题。

The 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 数据。