Your workflow is unique 👨💻 - tell us how you use Dropbox here.
Forum Discussion
harunctgbd
7 years agoExplorer | Level 3
Android SDK auth access token malformed when Access Token use in Dropbox JS SDK
Recently I have included Dropbox in my ionic 1 android application through Dropbox JavaScript SDK for user data backup. I have used inAppBrowser for the authentication process. Everything is working ...
Greg-DB
Dropbox Community Moderator
7 years ago[Cross-linking for reference: https://stackoverflow.com/questions/53699757/dropbox-android-sdk-auth-access-token-malformed-when-use-in-dropbox-js-sdk ]
Regardless of where/how you got a Dropbox API OAuth 2 access token, you should be able to use it to make Dropbox API v2 calls from any platform. For instance, a Dropbox API OAuth 2 access token retrieved via a Java/Android SDK can also be copied over and used via JavaScript.
The error message is indicating that the supplied access token is "malformed", i.e., it isn't in the expected format, so it sounds like perhaps you're accidentally modifying it when copying it over.
First, I recommend inspecting the access token string itself to see how it may be malformed. For instance, has it been accidentally truncated, or perhaps it has unexpected leading or trailing whitespace, etc.
For comparison, here's a sample OAuth 2 access token:
Zu9U1XOZl8QAAAAAAAOIULgRVgYHAjrusYASKTBRbaRpQXKJWpH9C4BwyJ9fpd6M
Note that it is one long string, using letters and numbers, with no whitespace.
(I retrieved this access token and revoked it, just for reference here. Please don't post your own access token.)
By the way, note that the SDK you linked to is for the retired API v1, and so is no longer officially supported. The OAuth app authorization flow implementation in that may still work, but we recommend using the current official API v2 Java SDK on Android instead.
harunctgbd
7 years agoExplorer | Level 3
Thanks for your response. I have updated Official API v2 SDK for android but still, I am getting access token which says malformed.
I have tested with android native Logcat for ensuring that before passing the token to my js client side it is modifying or not. I found both are the same token that I am getting after authentication.
package cordova.plugin.dbxconnect;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import android.util.Log;
import android.content.Context;
import com.dropbox.core.android.Auth;
import com.dropbox.core.v2.users.FullAccount;
import com.dropbox.core.android.AuthActivity;
public class DbxConnect extends CordovaPlugin {
final static private String APP_KEY = "myAppKey";
private static CallbackContext myCallbackContext;
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("dbxAuth")) {
this.dbxAuth(callbackContext);
DbxConnect.myCallbackContext = callbackContext;
return true;
}
return false;
}
private void dbxAuth(CallbackContext callbackContext) {
Context context = this.cordova.getActivity().getApplicationContext();
Auth.startOAuth2Authentication(context, APP_KEY);
}
@Override
public void onResume(boolean multitasking) {
super.onResume(multitasking);
try {
String accessToken = Auth.getOAuth2Token();
Log.d("TOKEN",accessToken);
DbxConnect.myCallbackContext.success(accessToken);
} catch (IllegalStateException e) {
DbxConnect.myCallbackContext.error("Drobox login fail");
}
}
}
- Greg-DB7 years ago
Dropbox Community Moderator
You mentioned you checked in LogCat on the Android side, but did you also add some logging to check on the JavaScript side? I recommend doing so if you haven't.
And then when you do inspect it in JavaScript, does it have the same format as the sample I shared in my previous post?
- harunctgbd7 years agoExplorer | Level 3
Yes, I have checked both side and both side token received same. Here is one token which I retrieved and revoked it. There is no extra whitespace before or after the token string.
XMtgp6WiHTAAAAAAAAAC4XhwiE-frZfooOu0Hxu5EmTfGUU38c6KakU0uqQDM77t
I can not figure out what's the problem :(
- Greg-DB7 years ago
Dropbox Community Moderator
Thanks. That does look valid. I also just tried it in the JavaScript SDK using your code and it worked as expected for me. (It failed with a 401 Unauthorized; the malformed check occurs first, so it would fail with the malformed error even if the token is revoked.)
Just to check, can you make sure you're not actually saving the token with that "Token:" prefix? I imagine that's just how you're printing it, but it would be good to make sure.
Otherwise, please share the rest of the relevant code to reproduce this so we can reproduce it here to investigate it.
About 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!