尝试获取 Nest 访问令牌时出现未经授权的错误
Unauthorized error when trying to get Nest Access Token
一切正常,直到几天前,我在尝试获取 Nest 访问令牌时开始收到未经授权的错误。我已经仔细检查过,客户端 ID 和客户端密码都是正确的。关于可能导致它的原因有什么想法吗?
HttpWebRequest request = WebRequest.CreateHttp("https://api.home.nest.com/oauth2/access_token?");
var token = await request.GetValueFromRequest<NestToken>(string.Format(
"client_id={0}&code={1}&client_secret={2}&grant_type=authorization_code",
CLIENTID,
code.Value,
CLIENTSECRET));
public async static Task<T> GetValueFromRequest<T>(this HttpWebRequest request, string postData = null)
{
T returnValue = default(T);
if (!string.IsNullOrEmpty(postData))
{
byte[] requestBytes = Encoding.UTF8.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var postStream = await request.GetRequestStreamAsync())
{
await postStream.WriteAsync(requestBytes, 0, requestBytes.Length);
}
}
else
{
request.Method = "GET";
}
var response = await request.GetResponseAsync();
if (response != null)
{
using (var receiveStream = response.GetResponseStream())
{
using (var reader = new StreamReader(receiveStream))
{
var json = await reader.ReadToEndAsync();
var serializer = new DataContractJsonSerializer(typeof(T));
using (var tempStream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
return (T)serializer.ReadObject(tempStream);
}
}
}
}
return returnValue;
}
虽然我无法提供答案,但我可以确认我的 iOS 应用在同一时间段内发生了同样的事情。
使用 chrome 中的 postman 可以很好地获取我的 url 和 post 值。 Alamofire 正在抛出错误 401,就像您的本机 swift 测试代码一样。
Nest 是否可能更改了他们的 https 协商?
原来是 Nest 端出现故障,后来修复了。
一切正常,直到几天前,我在尝试获取 Nest 访问令牌时开始收到未经授权的错误。我已经仔细检查过,客户端 ID 和客户端密码都是正确的。关于可能导致它的原因有什么想法吗?
HttpWebRequest request = WebRequest.CreateHttp("https://api.home.nest.com/oauth2/access_token?");
var token = await request.GetValueFromRequest<NestToken>(string.Format(
"client_id={0}&code={1}&client_secret={2}&grant_type=authorization_code",
CLIENTID,
code.Value,
CLIENTSECRET));
public async static Task<T> GetValueFromRequest<T>(this HttpWebRequest request, string postData = null)
{
T returnValue = default(T);
if (!string.IsNullOrEmpty(postData))
{
byte[] requestBytes = Encoding.UTF8.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var postStream = await request.GetRequestStreamAsync())
{
await postStream.WriteAsync(requestBytes, 0, requestBytes.Length);
}
}
else
{
request.Method = "GET";
}
var response = await request.GetResponseAsync();
if (response != null)
{
using (var receiveStream = response.GetResponseStream())
{
using (var reader = new StreamReader(receiveStream))
{
var json = await reader.ReadToEndAsync();
var serializer = new DataContractJsonSerializer(typeof(T));
using (var tempStream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
return (T)serializer.ReadObject(tempStream);
}
}
}
}
return returnValue;
}
虽然我无法提供答案,但我可以确认我的 iOS 应用在同一时间段内发生了同样的事情。
使用 chrome 中的 postman 可以很好地获取我的 url 和 post 值。 Alamofire 正在抛出错误 401,就像您的本机 swift 测试代码一样。
Nest 是否可能更改了他们的 https 协商?
原来是 Nest 端出现故障,后来修复了。