0

我正在尝试使用 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

难道我做错了什么?

4

1 回答 1

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 令牌和密码。

祝你好运!

于 2012-12-27T19:04:24.067 回答