Dropbox.js authentication in Cordova/PhoneGap

不羁岁月 提交于 2019-12-23 10:07:22

问题


I'm writing an app in Cordova/PhoneGap which tries to fetch a file from Dropbox using Dropbox.js. Cordova version is 3.0.1 and Dropbox.js version is 0.10.0. My Javascript works just fine on a desktop browser with this:

var client = new Dropbox.Client({ key: "<my key>", secret: "<my secret>"} );
client.authenticate(function(error, client) {
...

But in the Cordova-packaged app I get an error: "It seems the app you were using submitted a bad request".

I suspect the problem has to do with the redirect-url which resolves to this in the Cordova app:

Dropbox.AuthDriver.BrowserBase.currentLocation()
-> file:///android_asset/www/index.html

Urls starting with file:/// will not work properly with Dropbox API even if I add them to OAuth redirect URIs in Dropbox API console.

The Cordova app does work fine if I know the uid and token before:

var client = new Dropbox.Client({
    key: "<my key",
    secret: "<my secret>",
    token: "<token>",
    uid: "<uid>"
});
client.authenticate(function(error, client) {
...

This way I can read my dropbox files just fine. Problem is that the token doesn't last forever and I 'd like to get a new one from my app itself.

According to this discussion, this issue should already have been resolved in an earlier version of dropbox.js (0.9.2). But I still run into it. I wonder if I should use the API a bit differently, but I don't know how.

Dropbox.js has added a redirectUrl option in this commit I just don't know exactly what should I put there in my Cordova app. The file:///android_asset/www/index.html will not work because Dropbox API does not allow file urls.

Simon McDonald's answer to this question might help. But that means I have to have an external server-hosted page with the dropbox.js login functionality. Or could I use the main dropbox web login page instead?


回答1:


dropbox.js 0.10.1 has some fixes for Cordova.

We have just set up a page that you can use as the OAuth 2 redirect URL in embedded WebViews, when file:// doesn't work.

https://www.dropbox.com/1/oauth2/redirect_receiver



来源:https://stackoverflow.com/questions/18041810/dropbox-js-authentication-in-cordova-phonegap

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!