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 数据。
我正在尝试从 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 数据。