bleze
bleze

Reputation: 61

Bad request 400 when exchanging refresh_token for access_token with box.com

I have successfully done this in the past for other services, however with box.com I get an error and I've tried everything I could think off and that others have suggested here.

I'm using .NET C#;

string postdata = "";
postdata += "client_id=" + HttpUtility.UrlEncode(client_id) + "&";
postdata += "client_secret=" + HttpUtility.UrlEncode(client_secret) + "&";
postdata += "refresh_token=" + HttpUtility.UrlEncode(refreshToken) + "&";
postdata += "redirect_uri=" + HttpUtility.UrlEncode(_redirectUri) + "&";
postdata += "grant_type=refresh_token";

var json = PostResponse(new Uri(@"https://www.box.com/api/oauth2/token"), postdata);

I've tried both with and without urlencoding of the values. Normally urlencoding is not needed in my experience. I've also tried different order of parameters.

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();
}

This code fails with error 400 (bad request). Similar code works fine with for example Google Drive.

Can anyone spot what I'm doing wrong with box.com? Thanks!

Upvotes: 1

Views: 2167

Answers (1)

bleze
bleze

Reputation: 61

Got it working using box_device_id and box_device_name (indirectly part of my problem) plus examining the response in details which showed that a json error message was returned stating that the refresh token had expired. Turns out that Box expires refresh tokens when using them, issuing a new one. This is different from the other cloud drives I've integrated with.

Upvotes: 1

Related Questions