Oauth 2.0 与box.com交换刷新\u令牌以访问\u令牌时请求错误400

Oauth 2.0 与box.com交换刷新\u令牌以访问\u令牌时请求错误400,oauth-2.0,access-token,Oauth 2.0,Access Token,我曾经在其他服务中成功地做到了这一点,但是在box.com上我遇到了一个错误,我尝试了所有我能想到的,以及其他人在这里提出的建议 我正在使用.NETC# 我尝试了使用和不使用URL编码的值。根据我的经验,通常不需要URL编码。 我还尝试了不同的参数顺序 private string PostResponse(Uri uri, string postdata) { var bytes = Encoding.UTF8.GetBytes(postdata); var request

我曾经在其他服务中成功地做到了这一点,但是在box.com上我遇到了一个错误,我尝试了所有我能想到的,以及其他人在这里提出的建议

我正在使用.NETC#

我尝试了使用和不使用URL编码的值。根据我的经验,通常不需要URL编码。 我还尝试了不同的参数顺序

private string PostResponse(Uri uri, string postdata)
{
    var bytes = Encoding.UTF8.GetBytes(postdata);

    var request = (HttpWebRequest)WebRequest.Create(uri);
    request.Method = WebRequestMethods.Http.Post;
    request.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
    request.ContentLength = bytes.Length;

    Stream OutputStream = request.GetRequestStream();
    OutputStream.Write(bytes, 0, bytes.Length);

    var response = request.GetResponse();
    var reader = new StreamReader(response.GetResponseStream());
    return reader.ReadToEnd();
}
此代码失败,错误为400(请求错误)。类似的代码可以很好地用于例如GoogleDrive


有人能发现我在box.com上做错了什么吗?谢谢

使用box_device_id和box_device_name(间接地是我的问题的一部分)使其正常工作,并详细检查响应,结果显示返回了一条json错误消息,说明刷新令牌已过期。结果表明,当使用刷新令牌时,该框将使其过期,并发出一个新的刷新令牌。这与我集成的其他云硬盘不同。

我也面临同样的问题。你能补充一下你是如何解决这个问题的吗?我没有。Box的刷新令牌过期策略使我无法使用他们的服务。我一直在与他们联系,希望他们会像其他云解决方案(Dropbox、OneDrive、Google Drive/cloud Print)一样开放一个不太安全的方案,刷新令牌永远不会过期。我建议你以同样的要求联系他们,以便不止一个通知他们需要。
private string PostResponse(Uri uri, string postdata)
{
    var bytes = Encoding.UTF8.GetBytes(postdata);

    var request = (HttpWebRequest)WebRequest.Create(uri);
    request.Method = WebRequestMethods.Http.Post;
    request.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
    request.ContentLength = bytes.Length;

    Stream OutputStream = request.GetRequestStream();
    OutputStream.Write(bytes, 0, bytes.Length);

    var response = request.GetResponse();
    var reader = new StreamReader(response.GetResponseStream());
    return reader.ReadToEnd();
}