我正在尝试使用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
我做错了吗?
答案 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令牌和密码。
祝你好运!