尝试获取嵌套访问令牌时出现未经授权的错误

本文关键字:授权 错误 获取 嵌套 访问令牌 | 更新日期: 2023-09-27 17:55:39

一切都很好,直到几天前,我在尝试获取 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 中使用邮递员可以正常工作。Alamofire 抛出错误 401,像您这样的原生 swift 测试代码也是如此。

Nest 是否可能改变了他们的 https 协商?

事实证明,这是因为Nest端的错误,后来得到了修复。