无法在Android上使用Dropbox进行身份验证

时间:2012-12-21 23:18:08

标签: android dropbox dropbox-api

我正在尝试使用OAuth的通用类对Dropbox上的用户进行身份验证。似乎Dropbox没有像API那样返回令牌秘密。

private CommonsHttpOAuthProvider mOAuthProvider;
private CommonsHttpOAuthConsumer mOAuthConsumer;

mOAuthConsumer = new CommonsHttpOAuthConsumer(mConsumerKey, mConsumerSecret);
//mConsumerKey and Secret are provided by Dropbox

mOAuthProvider = new CommonsHttpOAuthProvider(
mRequestTokenEndpointUrl, mAccessTokenEndpointUrl, mAuthorizationWebsiteUrl);

String url = null;
try {
    url = mOAuthProvider.retrieveRequestToken(mOAuthConsumer, mCallback);
}catch(Exception e){}

API表示url现在应该包含token / token_secret对。但是,网址看起来像这样:

https://www.dropbox.com/1/oauth/authorize?oauth_token=xxxxxx&oauth_callback=xxxxx

我做错了吗?

1 个答案:

答案 0 :(得分:0)

看起来你正在使用oauth-signpost库。您获得的URL不是检索令牌和秘密。相反,您必须使用该URL启动浏览器窗口以让用户对自己进行身份验证。要检索DropBox返回的令牌和秘密,您必须执行以下操作:

String url = null;
try {
    url = mOAuthProvider.retrieveRequestToken(mOAuthConsumer, mCallback);

    //Retrieve token and secret here
    String token = mOAuthConsumer.getToken();
    String secret = mOAuthConsumer.getTokenSecret();
}
catch(Exception e){}

然后,您可以使用从调用retrieveRequestToken()调用获得的URL启动浏览器窗口,例如:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

请注意,请确保在启动浏览器窗口之前保存请求令牌和密码(我建议将其保存在 SharedPreferences 中),因为一旦退出活动,您的 mOAuthConsumer 实例将丢失。然后,您必须重新创建 mOAuthConsumer 并设置您检索的请求令牌和机密,然后检索ACCESS令牌和密码。

祝你好运!