2012-12-21 44 views
0

我正在嘗試使用OAuth的泛型類在Dropbox上對用戶進行身份驗證。看起來Dropbox並不像API所說的那樣返回令牌密鑰。無法使用Android上的Dropbox進行身份驗證

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_secret對。但是,url看起來像這樣:

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

我做錯了什麼?

回答

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

祝你好運!

相關問題