We are aware of the issue with the badge emails resending to everyone, we apologise for the inconvenience - learn more here.

Forum Discussion

manishkanwaria's avatar
manishkanwaria
New member | Level 2
2 years ago

Generate access token without client interaction using Dropbox SDK (C# Api Project)

Hi Folks,

 

I have a C# API project which has a service that downloads video assets from different sources, i.e., Azure Blob, AMS, and other client environments.

The new client came in with DropBox as the source for videos, and I am finding difficulty in implementing the OAuth flow. 

 

Please note that there will be no user interaction for authorization, and it will be a completely backend process. I have gone through multiple options, but nothing seems to be working for me.

 

I have been manually generating the access token from the generate access token button under the security tab all this time, but I need to automate this process.

 

Any help is appreciated. Thanks

  • If you need long-term access, you'll need to use the OAuth app authorization flow, but this only needs to be done once per account. It is not possible to fully automate the OAuth process where the user chooses to authorize the app and the app then receives the resulting access token and optional refresh token. This needs to be done manually by the user at least once.
     
    If your app needs to maintain long-term access without the user manually re-authorizing it repeatedly, the app should request "offline" access so that it gets a refresh token. The refresh token doesn't expire and can be stored and used repeatedly to get new short-lived access tokens whenever needed, without the user manually reauthorizing the app.
     
    You can find more information in the OAuth Guide and authorization documentation. There's a basic outline of processing this flow in this blog post which may serve as a useful example. 

     

    When you use the official Dropbox API v2 .NET SDK, you do not need to implement all of the code for the OAuth flow yourself. The SDK will do most of the work for you. You can find examples of using this here. If this is only for your own account, you can also opt to perform the OAuth app authorization flow manually once, e.g., as shown in the post linked in my previous paragraph, and plug that in to the .NET SDK. The SDK will handle the refresh process for you when you supply the necessary credentials: the refresh token, app key, and if not using PKCE, app secret.

  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Staff rankDropbox Staff

    If you need long-term access, you'll need to use the OAuth app authorization flow, but this only needs to be done once per account. It is not possible to fully automate the OAuth process where the user chooses to authorize the app and the app then receives the resulting access token and optional refresh token. This needs to be done manually by the user at least once.
     
    If your app needs to maintain long-term access without the user manually re-authorizing it repeatedly, the app should request "offline" access so that it gets a refresh token. The refresh token doesn't expire and can be stored and used repeatedly to get new short-lived access tokens whenever needed, without the user manually reauthorizing the app.
     
    You can find more information in the OAuth Guide and authorization documentation. There's a basic outline of processing this flow in this blog post which may serve as a useful example. 

     

    When you use the official Dropbox API v2 .NET SDK, you do not need to implement all of the code for the OAuth flow yourself. The SDK will do most of the work for you. You can find examples of using this here. If this is only for your own account, you can also opt to perform the OAuth app authorization flow manually once, e.g., as shown in the post linked in my previous paragraph, and plug that in to the .NET SDK. The SDK will handle the refresh process for you when you supply the necessary credentials: the refresh token, app key, and if not using PKCE, app secret.

    • manishkanwaria's avatar
      manishkanwaria
      New member | Level 2

      Hi Greg-DB,

      Thank you for your valuable feedback. Your suggested way really helped :). I am successfully able to generate an access token from the auth code retrieved from the redirect URL through offline mode. I am also glad to hear that the refresh token doesn't expire and can be used to generate short-lived access tokens.

       

      The Dropbox client is also initialised successfully; however, now I am running into access problems to the video asset.

       

      I have created an app under the app console with the App Folder option. I could see a folder being created as App/MyFolder. However, when I try to download using the below code, I get an exception stating "path/not_found/"

      using (var response = await dbx.Files.DownloadAsync("//Apps//MyFolder//VID20230902073536.mp4"))  

      Please correct me if I am doing anything wrong.

       

      Thanks.

      • Здравко's avatar
        Здравко
        Legendary | Level 20

        Hi manishkanwaria,

        You may try with:

        var response = await dbx.Files.DownloadAsync("/VID20230902073536.mp4")

        Does it works? 🤔😉

        Hope this helps.

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

5,877 PostsLatest Activity: 12 months ago
325 Following

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 or Facebook.

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!