2010-07-23 71 views
13

我正在嘗試以下示例應用程序的twitter oauth。android twitter retrieveRequestToken 401請求令牌

http://www.androidsdkforum.com/android-sdk-development/3-oauth-twitter.html

private void askOAuth() { 
     try { 
      consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
      provider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token", 
               "http://twitter.com/oauth/access_token", 
               "http://twitter.com/oauth/authorize"); 
      String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL); 
      Toast.makeText(this, "Please authorize this app!", Toast.LENGTH_LONG).show(); 
      this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 
     } catch (Exception e) { 
      Log.e(APP, e.getMessage()); 
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
    } 

當我運行下面的代碼它提供了異常如下

「oauth.signpost.exception.OAuthNotAuthorizedException:授權失敗(服務器回答道401)這可能是因爲。消費者密鑰不正確或簽名不匹配。「

在這條線 String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);

我提供了正確的「鑰匙」和「祕密」不推特給了我錯了密鑰和密碼

+0

plz告訴我要在CALLBACK_URL中放置什麼? – Shruti 2012-09-11 09:58:25

+0

你的android活動URL會在twitter返回響應後被調用 – 2012-09-11 18:46:00

+0

你的android活動URL會在twitter返回響應後被調用 – 2012-09-11 18:46:47

回答

1

終於完成了,請查看以下後

android twitter outh tutorial callback problem

+0

好的我問過幾次「是否將twitter應用程序配置爲Browser ???」 – 2010-08-06 00:44:45

+0

已配置爲瀏覽器。 – 2010-08-06 06:34:46

+0

我已經意識到,即使在其他用戶的幫助下,您也可以回答自己的問題以獲得積分。 – Jorgesys 2013-04-12 16:48:10

8

我剛剛有同樣的問題。它只出現在我的開發手機上,但在仿真器和另一部手機上,代碼工作正常。在嘗試了幾個沒有運氣的相關問題的解決方案之後,最終發現我沒有在開發手機上設置時間和日期,該手機沒有SIM卡。這導致SSL證書無效,並且OAuth請求失敗,以及使用HTTPS的其他任何操作。設定時間後,問題就消失了。

+0

有似乎是同許多其他可能的原因問題也是如此,但這個我以前找不到的建議,可能性因爲這不完全是Twitter或OAuth本身的問題。 – DonSteep 2010-07-26 09:44:53

+4

+1,您準備在沒有SIM卡的手機中設置日期和時間。 – 2011-08-03 08:38:55

4

** 1)**設置日期和時間,以正確的價值觀, 這將有助於解決這個問題。****

2)

private OAuthConsumer consumer; 
private OAuthProvider provider; 
... 
... 
... 
provider = new CommonsHttpOAuthProvider (
       TWITTER_REQUEST_TOKEN_URL, 
       TWITTER_ACCESS_TOKEN_URL, 
       TWITTER_AUTHORIZE_URL); 

private void askOAuth() { 
     try { 
      consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
      provider = new CommonsHttpOAuthProvider("http://twitter.com/oauth/request_token", 
               "http://twitter.com/oauth/access_token", 
               "http://twitter.com/oauth/authorize"); 

      provider.setOAuth10a(true); 

      String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL); 
      Toast.makeText(this, "Please authorize this app!", Toast.LENGTH_LONG).show(); 
      this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 
     } catch (Exception e) { 
      Log.e(APP, e.getMessage()); 
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
    } 

3)你的twitter應用配置爲瀏覽器嗎? 嘗試用此鍵:

消費者鍵

sdOjEI2cOxzTLHMCCMmuQ

消費者祕密

biI3oxIBX2QMzUIVaW1wVAXygbynuS80pqSliSDTc

+0

我想在模擬器上面的代碼,並在設備上測試以及在兩種情況下都不工作。 我將通過設置模擬器的日期和時間再試一次,然後嘗試一下。 – 2010-07-27 04:24:59

+0

@Faisal我在我的答案中編輯了你的代碼。 – Jorgesys 2010-07-27 15:11:40

+0

我試過這個,但仍然不工作得到相同的錯誤。 – 2010-07-28 07:22:13

1

是totramon是正確的......如果您只在驗證問題時遇到問題,則可能需要設置設備時間。我遇到了同樣的問題,只能通過此解決方案解決。另外,如果您使用的是舊版的twitter API,則需要將其更改爲穩定的版本api(2.1.4)。您可以從以下鏈接找到:

http://twitter4j.org/en/index.html

享受..

14

我對這個花了幾個小時。似乎您必須在Twitter應用程序開發人員面板的「設置」標籤中將任意值設置爲回調網址。保持默認的空值將禁用動態回調URL。

所有教程和我在網上找到的所有信息都是無效的。Twitter長時間刪除了「客戶/網站」單選按鈕。

此外,OAuth檢查時鐘偏斜。

+2

+1在回調網址(例如https://dev.twitter.com)中設置某些內容適合我。 – 2012-06-24 12:05:55

+0

@gilm:太遲了,但我必須非常感謝你! – 2012-09-03 05:20:31

+0

@吉姆感謝它解決了我的問題。 – Siddhesh 2013-04-09 05:38:37

2

使用https代替提供者中的http

+0

這對我有用。謝謝! – 2014-06-19 18:55:25