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

overjeer's avatar
overjeer
Helpful | Level 6
8 years ago

API always returns invalid_access_token, 500 error when i go to "my apps"

Hi,

 

I understand that there was some service disruption about 10 hours ago. However, I believe this has been resolved now.

 

When I generate an access token using the dropbox java sdk on my Android app, it is generating an access token fine. However, when I use this access token to authorise my account and run something like dbxClientV2.getUsers().getCurrentAccount(), it always returns an error:

 

{"error_summary": "invalid_access_token/..", "error": {".tag": "invalid_access_token"}}

 

I have tried to generate several tokens and they all return the same error.

 

Also, when I logon as a developer and go to "My Apps" it is returning me a 500 error. Does this mean that there are some API issues?

 

Any help would be appreciated. 

  • Greg-DB's avatar
    Greg-DB
    8 years ago

    You mentioned this is for an Android app, but the DbxWebAuth you're using isn't meant for Android. The API v2 Java SDK does have specific support for Android though. There's an example Android app using it here.

     

    - To set that up, your AndroidManifest.xml should be set up as shown here.

    - You start the flow by calling startOAuth2Authentication as shown here.

    - You complete the flow by calling getOAuth2Token as shown here.

    - Your app can store and re-use the resulting access token for that user, as the example does here.

    - Once you have an access token, you can make a client as shown here.

     

    For the code you are currently using though, it looks like you're getting that 'invalid_access_token' error because you're supplying an authorization code, instead of an access token.

     

    When using DbxWebAuth, you get back an "authorization code", which is not an access token. You need to exchange that authorization code for an access token, as shown here.

  • thanks mate. I will give this a go and come back to you. Thanks so much for coming back so swiftly!
  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Staff rankDropbox Staff
    Thanks for the report! The 500 on the web site definitely sounds like a bug on our side. We're looking into it.

    For the `invalid_access_token` issue, can you share the code you're using to generate and use the access token? Thanks in advance!
    • overjeer's avatar
      overjeer
      Helpful | Level 6

      Thanks for your response. Here is the code:

       

      It is for my android app. I have to add that until friday it was working OK.

       

      - First I redirect the user to authorise my app. This is done by redirecting them to a URL that gets generated by this code:

       

      val request = DbxWebAuth.newRequestBuilder()
                      .withDisableSignup(true)
                      .withNoRedirect()
                      .build()
              return mWebAuth.authorize(request)

      where mWebAuth is 

       

      mWebAuth = DbxWebAuth(mConfig, mAppInfo)

      the user is redirected to a webview and if she authorises my app, a token gets generated. This token is stored and a simple command is run for verifying whether the token is valid. For this I need an instance of the DbxClientV2 so I create one:

       

      DbxClientV2(mConfig, "token code")

      Then I run the command to see whether the token generated is valid or not:

       

      client.users()?.currentAccount

      This is where I get an exception:

       

       {"error_summary": "invalid_access_token/.", "error": {".tag": "invalid_access_token"}}
      • Greg-DB's avatar
        Greg-DB
        Icon for Dropbox Staff rankDropbox Staff

        You mentioned this is for an Android app, but the DbxWebAuth you're using isn't meant for Android. The API v2 Java SDK does have specific support for Android though. There's an example Android app using it here.

         

        - To set that up, your AndroidManifest.xml should be set up as shown here.

        - You start the flow by calling startOAuth2Authentication as shown here.

        - You complete the flow by calling getOAuth2Token as shown here.

        - Your app can store and re-use the resulting access token for that user, as the example does here.

        - Once you have an access token, you can make a client as shown here.

         

        For the code you are currently using though, it looks like you're getting that 'invalid_access_token' error because you're supplying an authorization code, instead of an access token.

         

        When using DbxWebAuth, you get back an "authorization code", which is not an access token. You need to exchange that authorization code for an access token, as shown here.