C# 更新令牌的Live connect SDK REST请求

C# 更新令牌的Live connect SDK REST请求,c#,rest,oauth-2.0,liveconnect,C#,Rest,Oauth 2.0,Liveconnect,我正在尝试更新令牌,但收到错误“远程服务器返回错误:(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_

我正在尝试更新令牌,但收到错误“远程服务器返回错误:(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);
    }
}
我试着用POST来做,但问题是一样的。
你有什么想法吗

似乎web服务器端的规范已更改,它希望您发送一个范围参数。我不知道scope参数是什么,也不知道您需要向它提供什么,但实际上您需要为requestUrl添加一行来添加它

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

如果提供scope参数,它会返回什么错误消息。它仍然说错误的请求必须提供一个作用域参数,还是说其他什么,比如作用域参数无效。它说参数无效。根据Live Connect规范,您的请求似乎是正确的。这似乎表明它应该是一个帖子而不是一个GET,但你已经尝试过了。可能是初始授权存在问题,返回的错误消息基于此,而不是它告诉您的内容。似乎有一个C#live connect C#api可能会有所帮助,或者是一个选项,具体取决于您的上下文。我的请求和Skydrive访问中有不同的作用域。
requestUrl.AppendFormat("&scope={0}", {whatever value the scope is suppose to be});