用于更新令牌的实时连接SDK REST请求

本文关键字:SDK REST 请求 连接 实时 更新 令牌 用于 | 更新日期: 2023-09-27 18:14:45

我正在尝试更新令牌,但我得到错误"远程服务器返回一个错误:(400)错误的请求。"我的代码是:

public static object Refresh_token(string client_id, string redirect_uri, string client_secret, string refresh_token, string scope)
{
    var requestUrl = new StringBuilder("https://login.live.com/oauth20_token.srf");
    requestUrl.Append("?grant_type=refresh_token");
    requestUrl.AppendFormat("&client_id={0}", client_id);
    requestUrl.AppendFormat("&redirect_uri={0}", HttpUtility.UrlEncode(redirect_uri));
    requestUrl.AppendFormat("&client_secret={0}", HttpUtility.UrlEncode(client_secret));
    requestUrl.AppendFormat("&refresh_token={0}", refresh_token);       
    WebRequest request = HttpWebRequest.Create(requestUrl.ToString());
    request.Method = "GET";       
    request.ContentType = "application/x-www.form-urlencoded;charset=UTF-8";
    WebResponse response = request.GetResponse();
    using (var reader = new StreamReader(response.GetResponseStream()))
    {
        var json = reader.ReadToEnd();
        return JsonConvert.DeserializeObject<Offline_access>(json);
    }
}

如果我从浏览器发送,我得到

{"error":"invalid_scope","error_description":"The provided request must include a 'scope' input parameter."}

我试着用POST做它,但它是同样的问题。有什么想法吗?

用于更新令牌的实时连接SDK REST请求

似乎web服务器端的规范发生了变化,它希望你发送一个作用域参数。我不知道scope参数是什么,也不知道你需要给它提供什么,但本质上你需要为requestUrl添加一行来添加它。

requestUrl.AppendFormat("&scope={0}", {whatever value the scope is suppose to be});