2016-01-29 39 views
0

我正在開發一個Android應用程序,它允許用戶自行配置Twitter消費者密鑰和祕密(Access Token和Access Token Secret未配置)。我想顯示登錄頁面之前驗證密鑰和密碼像下面,但它拋出一個異常:Twitter4J有沒有辦法僅通過使用使用者密鑰和密鑰來驗證憑據?

Twitter twitter = new TwitterFactory().getInstance(); 
twitter.setOAuthConsumer(key, secret); 
     try { 
      User user = twitter.verifyCredentials(); // this line throws an exception 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

唯一的例外是:

Twitter的憑證驗證fails.java.lang.IllegalStateException: 認證缺少證書。見 http://twitter4j.org/en/configuration.html的細節

有沒有辦法來驗證使用者密鑰和機密沒有訪問令牌和訪問令牌訪問?

回答

6

您遇到的異常消息是相當清楚的:

身份驗證憑據丟失。

在嘗試以編程方式訪問Twitter API之前,您需要先進行正確的身份驗證。僅使用setOAuthConsumer(key, secret)不會設置/配置必要的訪問令牌信息。這兩個信息都需要提供(提示:如果您對此感興趣,this introduction會給您一個關於OAuth身份驗證如何工作的概述)。

根據http://twitter4j.org/en/configuration.html然後你可以通過ConfigurationBuilder實例初始化代碼如下所示:

ConfigurationBuilder cb = new ConfigurationBuilder(); 
cb.setDebugEnabled(true) 
    .setOAuthConsumerKey("*your-consumer-key*") 
    .setOAuthConsumerSecret("*your-consumer-secret*") 
    .setOAuthAccessToken("*your-access-token*") 
    .setOAuthAccessTokenSecret("*your-access-token-secret*"); 
TwitterFactory tf = new TwitterFactory(cb.build()); 
Twitter twitter = tf.getInstance(); 

由於無效的的accessToken/AccessTokenSecret,您應該然後能夠調用:

try { 
    User user = twitter.verifyCredentials(); 
    // ... do further things.... 
} catch (Exception e) { 
     e.printStackTrace(); 
} 

希望它有幫助。

+1

謝謝@MWiesner。我的意圖是檢查密鑰和祕密是否有效。我意識到我可以通過調用這個來檢查:Twitter twitter = new TwitterFactory()。getInstance(); twitter.setOAuthConsumer(key,secret); twitter.getOAuthRequestToken();如果密鑰和祕密無效,則在調用twitter.getOAuthRequestToken()時會引發異常。 – Huigege

相關問題