Forum Discussion

blink's avatar
blink
Explorer | Level 3
9 years ago

API V2 oauth 1.0

Dear all, is oauth 1.0  still use in the future?  That's means use API V2 and use oauth 1.0 through HTTP, TKS!

  

7 Replies

  • blink's avatar
    blink
    Explorer | Level 3
    9 years ago

    Thanks for your answer.  and I have another question about API V2 oauth 2.0.

    I use c++ code to upload files, but how can I get access token by http request with API V2 , eg:

    https://www.dropbox.com/oauth2/authorize
    https://api.dropboxapi.com/oauth2/token

    c++ code :

    #include <stdio.h>
    #include <curl/curl.h>
    
    int main (int argc, char *argv[])
    {
          CURL *curl;
          CURLcode res;
    
          /* In windows, this will init the winsock stuff */
          curl_global_init(CURL_GLOBAL_ALL);
    
          /* get a curl handle */
          curl = curl_easy_init();
          if(curl) {
    
                printf ("Running curl test.\n");
    
                struct curl_slist *headers=NULL; /* init to NULL is important */
                headers = curl_slist_append(headers, "Authorization: Bearer <ACCESS_TOKEN>");
                headers = curl_slist_append(headers, "Content-Type: application/octet-stream");
                headers = curl_slist_append(headers, "Dropbox-API-Arg: {\"path\":\"/test_c++_upload_test.txt\"}");
                curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
    
                curl_easy_setopt(curl, CURLOPT_URL, "https://content.dropboxapi.com/2/files/upload");
                curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "test data for upload");
    
                /* Perform the request, res will get the return code */
                res = curl_easy_perform(curl);
                /* Check for errors */
                if(res != CURLE_OK)
                      fprintf(stderr, "curl_easy_perform() failed: %s\n",
                        curl_easy_strerror(res));
    
                /* always cleanup */
                  curl_easy_cleanup(curl);
    
                  printf ("\nFinished curl test.\n");
    
          }
          curl_global_cleanup();
    
          printf ("Done!\n");
          return 0;
    
    }

     

  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    9 years ago

    You can find information on how the OAuth app authorization flow works here:

    https://www.dropbox.com/developers/reference/oauth-guide

    The documentation for the specific endpoints you need to use can be found here:

    https://www.dropbox.com/developers/documentation/http/documentation#authorization

    You can use either the "token" or "code" flow, depending on what makes sense for your app.

    Note that https://www.dropbox.com/oauth2/authorize is a web page, not an API endpoint. Your app should direct users there in their browser, and not make any API calls to it directly.

    The https://api.dropboxapi.com/oauth2/token URI is an API endpoint that you would use if you use the OAuth 2 "code" flow.

    If you run in to any issues implementing that, please let us know the steps to reproduce the issue, and share the relevant code and output so we can look into it.

  • blink's avatar
    blink
    Explorer | Level 3
    9 years ago

    Many thanks your answer!  and I've read the the URL doc, but I have a puzzle when I use browse to get token.

      https://www.dropbox.com/oauth2/authorize?client_id=0lksd9ebhsil1qx?response_type=(when can I get the string?).  the browse show 400 error with message:

              More details for developers

              Invalid client_id: "0lksd9ebhsil1qx?response_type=".
    Please tell me the url   (https://www.dropbox.com/oauth2/authorize)  Parameters , thank you!
  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    9 years ago
    When constructing a URL, the location should be separated from the parameters by one '?', and subsequent parameters should be separated by '&'.

    The 'response_type' should be either 'code' or 'token', depending on which flow you want to use. You can find more information on these in the documentation here:

    https://www.dropbox.com/developers/documentation/http/documentation#authorization

    So, for example, your /authorize URL might look like this:

    https://www.dropbox.com/oauth2/authorize?client_id=0lksd9ebhsil1qx&response_type=code
  • blink's avatar
    blink
    Explorer | Level 3
    9 years ago

    Thank you for your answer!  and I can get authorization code by browser.  then  I use
    https://api.dropboxapi.com/oauth2/token  API  to get correct result .  but that's not my needed.

     and I don't understand what's the different  between https://api.dropboxapi.com/oauth2/token  result "access_token" and  App Console (Generated access token) .

     in fact, I want to the user input App key and App secret . then I can use API V2  to get access token ,  and I can upload files.  if let's user input access token, it too long and  inconvenient . so please help me. thanks!

  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    9 years ago
    The tokens retrieved by /oauth2/token and the App Console's "Generate" button are the same kind of access tokens. The only thing to note is that the "Generate" button can only be used to get an access token for the single account that owns the app, whereas the OAuth flow can be used to get an access token for any account.

    When you develop an API app, you should not require the user to enter their own app key and secret. You, as the developer, only need to register the API app once. You should then use the app key and secret in your app. The app key and secret identify the app. The app can then send the user through the OAuth flow to get an access token for the user.

    I recommend reading the OAuth guide for an overview of how this works:

    https://www.dropbox.com/developers/reference/oauth-guide

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.

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!