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

Java 使用Twitter4j时出现凭据设置问题,java,twitter,twitter-oauth,twitter4j,credentials,Java,Twitter,Twitter Oauth,Twitter4j,Credentials,我使用Java上的Twitter4j在Twitter上发布了一条消息,代码如下: public static void main(String[] args) throws TwitterException { String consumerKey = "....."; String consumerSecret = "...."; String accessToken = "...."; String accessTokenSecret = "...."; ConfigurationBuil

我使用Java上的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上做的第一次尝试。
有人知道原因吗?

问题可以通过添加以下内容来解决:

cb.setUseSSL(true);

我不知道背后的确切解释。有人能解释一下吗?

您一定使用了较旧版本的Twitter4J

对于Twitter4j的旧版本,您必须启用
.setusesl(true)

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

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

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

通过TLS进行通信通过保护 用户与Twitter API之间的信息 公共互联网


这是正确的答案,并解释了为什么如果您使用的是较旧版本的Twitter4J,那么必须将其设置为true。如果可以的话,我建议您更新到最新版本。