使用Twitter4j时出现凭据设置问题

时间:2017-08-08 15:02:28

标签: java twitter twitter-oauth twitter4j credentials

我使用以下代码在Twitter上使用Twitter4j在Twitter上发布消息:

public static void main(String[] args) throws TwitterException {
String consumerKey = ".....";
String consumerSecret = "....";
String accessToken = "....";
String accessTokenSecret = "....";

ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
        .setOAuthConsumerKey(consumerKey)
        .setOAuthConsumerSecret(consumerSecret)
        .setOAuthAccessToken(accessToken)
        .setOAuthAccessTokenSecret(accessTokenSecret);
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();

//Posting a Tweet
twitter.updateStatus("Hello , This is a sample tweet");

}

但是,我收到以下错误:

Exception in thread "main" 403:The request is understood, but it has been refused. An accompanying error message will explain why. This code is used when requests are being denied due to update limits (https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following). 
message - SSL is required
code - 92

Relevant discussions can be found on the Internet at:
http://www.google.co.jp/search?q=b2b52c28 or
http://www.google.co.jp/search?q=0f7b8a6a
TwitterException{exceptionCode=[b2b52c28-0f7b8a6a], statusCode=403, message=SSL is required, code=92, retryAfter=-1, rateLimitStatus=null, version=3.0.0}

无论是尝试获取时间线,还是发帖或发帖,我都会收到同样的错误。

我认为我无法达到任何限制,因为这是我用Java做的第一次尝试。 有人对这个原因有所了解吗?

2 个答案:

答案 0 :(得分:1)

通过添加以下内容解决了这个问题:

cb.setUseSSL(true);

我完全不知道背后的解释。有人可以解释一下吗?

答案 1 :(得分:1)

您必须使用旧版本的Twitter4J。

对于早期版本的Twitter4j,您必须启用.setUseSSL(true);

在以前的版本中(在2014年3月4日之前),您必须选择是否要通过SSL或标准请求连接到Twitter的API,但是Twitter已经关闭了通过非SSL连接。

在twitter4j的4.xx版中,setUseSSL(..)方法已被删除,默认情况下库将使用SSL。

Twitter出于用户隐私原因将其API更改为要求 SSL

  

通过TLS进行通信可通过保护来保护用户隐私   用户和Twitter API之间传递的信息   公共互联网。