You might see that the Dropbox Community team have been busy working on some major updates to the Community itself! So, here is some info on what’s changed, what’s staying the same and what you can expect from the Dropbox Community overall.

Forum Discussion

Viggaaa's avatar
Viggaaa
Explorer | Level 3
6 years ago

Redirect on .GetCurrentAccountAsync()

Hi,

I'm using the Dropbox Api 4.9.3 for .NET, and there is some weird behavior during/after authentication.

What I do is:
- open a WebBrowserDialog
- get authorizeUri using DropboxOAuth2Helper.GetAuthorizeUri(OAuthResponseType.Token, m_ClientId, m_RedirectUrl, m_Oauth2State, forceReauthentication: true);
- navigate to that Uri
- get the OAuth2Response using DropboxOAuth2Helper.ParseTokenFragment(redirectUrl);
- save that OAuth2Response and close the WebBrowserDialog

so far so good, the OAuth2Response is usable and I can create a working DropboxClient whenever I need

When I first access the dropboxClient.Users.GetCurrentAccountAsync-Method, it opens my browser with the empty redirect-url (title something with authentication successful)

I don't get where that's coming from and why.

The workaround I found was to keep the WebBrowserDialog open and do the first call to client.Users.GetCurrentAccountAsync() there, so it opens the empty redirect-url, but within that browserDialog, which I immediately close afterwards.

  • When using `OAuthResponseType.Token`, a redirect URI is required, as a security feature of OAuth 2. It's optional for `OAuthResponseType.Code` though, in which case the user can manually copy/paste the authorization code from the web site into the app. (Using a redirect URI streamlines the process by avoiding the need to have the user do that manually.)

    By the way, I don't have full context on your app/platform of course, nor am I specifically familiar with the `WebBrowserDialog or `WebBrowserControl` classes you mentioned, but for reference for you if you haven't seen it, or for anyone else reading, our official documentation for processing this in the system browser via the .NET SDK can be found here.

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

    The GetCurrentAccountAsync method certainly shouldn't be opening a browser. It just makes an API call to /2/users/get_current_account. (The method definition can be found here for reference.)

    Can you step through the code with a debugger when this occurs to see where/when exactly that browser is getting called up?

    • Viggaaa's avatar
      Viggaaa
      Explorer | Level 3

      I am fairly certain it is that method, unless I made a mistake during authentication somewhere (even though it apparently succeeded and I can use the api, download/upload files and so on)

       

      That method was used in several different contexts during my code. Sometimes to get account for the email, sometimes to simply check the connection, ... and I made a break-point on all those calls. The first call on that method most times (not always) opens that redirect url in my browser, calls after that do not.


      Tested it on two other computers in the office, same problem.

       

      I'll take another look at the webBrowserDialog, maybe it's doing some behind the curtain magic and throws that redirect to my browser. Just not sure why it would be that much later where the dialog is closed and alraedy should be disposed.

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

        Thanks for following up. I can't find any reason that GetCurrentAccountAsync would somehow open a browser itself. The code for it doesn't have anything to that effect, and it's not doing it in my testing.

        Can you perhaps make and share a small sample project that reproduces this issue so we can investigate it here?

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

5,914 PostsLatest Activity: 4 hours ago
333 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!