Your workflow is unique 👨‍💻 -  tell us how you use Dropbox here.

Forum Discussion

pineapps's avatar
pineapps
Helpful | Level 5
8 years ago

OAuth2 access token request - Basic authentication not working

I am trying to integrate Dropbox in my webservice. However I decided to use a direct integration instead of any APIs as I need a limited number of functions only and not used to code object orientated in PHP.

 

For any reason my authentication token handling is not working. I figured out, something is wrong with the basic authentifiation, as some other functions which should work with basic as well as bearer authentification do only work with the last one mentioned.

 

function dropboxAuthentication($code){

    global $authToken;
$parameters['code']=$code;
$parameters['grant_type']="authorization_code"; $parameters['redirect_uri']="https://myurl.com/file.php"; // Create the context for the request $context = stream_context_create(array( 'http' => array( 'method' => 'POST', 'header' => 'Authorization: {Basic '.base64_encode("my app id:my app secret").'}\r\n'. 'Content-Type: application/json\r\n', 'content' => json_encode($parameters) ) )); // Send the request $response = file_get_contents('https://api.dropboxapi.com/oauth2/token', FALSE, $context); // Check for errors if($response === FALSE){ die('Error'); } // Decode the response $result=json_decode($response, TRUE); return $result['code']; }

 

The file accessed after the login calls the function with the temporary code given. The temporary code is received well.

 

The result (response body) is always 

Error

I checked the response code which is a HTTP Error 400.

 

Please find the HTTP response headers attached

Spoiler
HTTP/1.1 400 Bad RequestServer: nginxDate: Fri, 05 Jan 2018 21:15:28 GMTContent-Type: application/jsonConnection: closeX-Dropbox-Request-Id: 7b42fa04f93fd7493deb1c7a34847cdeX-Frame-Options: DENYContent-Security-Policy: sandbox; frame-ancestors 'none'X-Content-Type-Options: nosniffContent-Disposition: attachment; filename='error'

 

Thank you very much for your support!

2 Replies

Replies have been turned off for this discussion
  • pineapps's avatar
    pineapps
    Helpful | Level 5
    8 years ago

    I managed to get additional information from the HTTP request:

     

    {"url":"https:\/\/api.dropboxapi.com\/oauth2\/token","content_type":"application\/json","http_code":400,"header_size":385,"request_size":350,"filetime":-1,"ssl_verify_result":0,"redirect_count":0,"total_time":0.287188,"namelookup_time":0.004172,"connect_time":0.018384,"pretransfer_time":0.053378,"size_upload":23,"size_download":97,"speed_download":337,"speed_upload":80,"download_content_length":-1,"upload_content_length":23,"starttransfer_time":0.287049,"redirect_time":0,"redirect_url":"","primary_ip":"162.125.66.7","certinfo":[],"primary_port":443,"local_ip":"85.13.153.199","local_port":45981}
    Last data received
    :{"error_description": "No auth function available for given request", "error": "invalid_request"}

About Dropbox API Support and Feedback

Node avatar for Dropbox API Support and Feedback
Get help with the Dropbox API from fellow developers and experts.

The Dropbox Community team is active from Monday to Friday. We try to respond to you as soon as we can, usually within 2 hours.

If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X, Facebook or Instagram.

For more info on available support options for your Dropbox plan, see this article.

If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!