2011-08-20 89 views
3

我試圖在Android上使用路標庫實現Google,Twitter,Yahoo等OAuth。Android上的雅虎OAuth - 401錯誤

以上所有的工作都很好,除了雅虎,當試圖檢索請求令牌時給我一個401錯誤。我試着將我的回調網址修改爲http,甚至嘗試了帶外驗證。

有沒有人有什麼我可以做錯的想法?

下面粘貼了我使用路標庫請求OAuth請求令牌的代碼。

private static CommonsHttpOAuthConsumer yahooConsumer = new CommonsHttpOAuthConsumer(
     YAHOO_CONSUMER_KEY, YAHOO_CONSUMER_SECRET); 
private static CommonsHttpOAuthProvider yahooProvider = new CommonsHttpOAuthProvider(
     YAHOO_REQUEST_URL, YAHOO_ACCESS_TOKEN_URL, YAHOO_AUTH_URL); 

String authURL = yahooProvider.retrieveRequestToken( yahooConsumer,YAHOO_REDIRECT_URL); startWebView(authURL);

編輯:

下面是來自逮住異常輸出:

08-21 00:18:10.935: WARN/System.err(3752): oauth.signpost.exception.OAuthNotAuthorizedException: Authorization failed (server replied with a 401). This can happen if the consumer key was not correct or the signatures did not match. 08-21 00:18:10.945: WARN/System.err(3752): at oauth.signpost.AbstractOAuthProvider.handleUnexpectedResponse(AbstractOAuthProvider.java:239) 08-21 00:18:10.945: WARN/System.err(3752): at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:189) 08-21 00:18:10.955: WARN/System.err(3752): at oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:69)

感謝,

Abhinav

+0

您能否提供來自雅虎401的錯誤細節? –

+0

@Kristiono - 我編輯了我的問題,添加了logcat輸出和異常。謝謝 –

+0

感謝您拋出的異常。我想你也應該看到雅虎給出的401身體響應。雅虎應該給你一個關於錯誤的描述性迴應。 –

回答

4

consumer_key_rejected表示您沒有向雅虎提供有效的consumer_key。如果您確實向雅虎提供了正確的consumer_key,則可以檢查您的雅虎應用程序註冊。可能您需要檢查至少一項或多項由雅虎提供的服務。不要忘記選擇應用程序的類型,無論它是基於Web的還是基於客戶端的。

這一切都很有意義,因爲雅虎將權限範圍包含在使用者密鑰中。請閱讀此說明以瞭解更多詳情:Yahoo OAuth Scope

這是解決辦法例子和提示,以解決您的問題,可能是有用的:Yahoo OAuth Problem - Consumer Key Rejected

讓我知道這對你的作品。

+0

感謝Kristiono的解釋。我很確定我的客戶密鑰是好的,並且已經嘗試了基於Web和基於客戶端的各種組合,包括OOB。你給出的第二個鏈接非常有趣 - 讓我試試他說的話,看看它是否有效! –

+0

謝謝Kristiono,我現在正在獲取請求令牌。這真的幫了我很大的忙 - 我正在考慮爲雅虎編寫自己的OAuth客戶端。 –

+0

很高興聽到! :) –

0

嘗試用Provider.setOAuth10a(true)強制進行1.0a認證。

還有一點值得檢查一下,客戶端的日期,時間和時區都是正確的,否則簽名驗證將失敗。

+0

謝謝。讓我試試這個並回到你身邊。 –

+0

這不起作用。我不禁感到,我錯過了一些基本的東西。我的應用程序已註冊爲基於Web的應用程序,擁有自己的域名作爲應用程序網址,我也將其作爲重定向網址,儘管我也嘗試將其註冊爲桌面應用程序並嘗試OOB。 –