Java twitter4j:401身份验证凭据缺失或不正确

Java twitter4j:401身份验证凭据缺失或不正确,java,twitter,twitter4j,Java,Twitter,Twitter4j,我目前正在尝试获取一批用户的userTimeline。这在过去对我有效,但现在不再有效。我正在使用twitter4j和oauth。到目前为止,我已经在我的帐户上注册了2个应用程序,这两个应用程序都应该能够访问twitter api。然而,从昨天开始,我得到了一个401身份验证数据缺失或不正确(尝试了两个应用程序)。twitter最近有没有对API做过任何更改?我应该设置一个新的twitter帐户吗?创建应用程序并允许其访问您自己的帐户是否合适 代码如下: ConfigurationBuilder

我目前正在尝试获取一批用户的userTimeline。这在过去对我有效,但现在不再有效。我正在使用twitter4j和oauth。到目前为止,我已经在我的帐户上注册了2个应用程序,这两个应用程序都应该能够访问twitter api。然而,从昨天开始,我得到了一个401身份验证数据缺失或不正确(尝试了两个应用程序)。twitter最近有没有对API做过任何更改?我应该设置一个新的twitter帐户吗?创建应用程序并允许其访问您自己的帐户是否合适

代码如下:

ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
      .setOAuthConsumerKey("q...w")
      .setOAuthConsumerSecret("R...o")
      .setOAuthAccessToken("2...7")
      .setOAuthAccessTokenSecret("O....8");

  TwitterFactory tf = new TwitterFactory(cb.build());

    Twitter twitter = tf.getInstance();
  for ( Map.Entry<Long, String> entry : tmls.entrySet()) {

        long uid = entry.getKey();

        Paging paging = new Paging(1, count);

        ResponseList<Status> rls;

        try {
            rls = twitter.getUserTimeline(uid, paging);

            for ( int j = 0 ; j < rls.size() ; j++ ) {

                if (false == ltindex.contains(uid)) {


                    alsa.add(new String[] {  String.valueOf( rls.get(j).getId() ) , String.valueOf( uid ), rls.get(j).getText() , "", entry.getValue(), String.valueOf( rls.get(j).getCreatedAt().getTime() )  });

                }

            }


        } catch (TwitterException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

  }

我也有同样的问题。我使用的消费者密钥和消费者机密是正确的,我的机器是同步的。问题是我在dev.twitter.com上注册应用程序时没有设置回调URL。一旦我设定好了,一切都正常了

消费者密钥和令牌存在问题。按照步骤操作

登录并转到我的应用程序意味着您的受尊敬的应用程序。 和转到设置并更改访问权限 只读 到 读、写和直接发送消息

和更新数据,如果未更新,则重新创建令牌并更新数据和您的程序。运行该程序,并确保在lib文件夹中有该程序的所有jar文件。
这个问题将得到解决。

我想我会分享这个,以防有人用谷歌搜索这个异常消息

在测试JSF应用程序的Twitter身份验证时,我尝试了以下用例:

打开Twitter身份验证窗口。 输入正确的凭据并登录

成功了。于是我试着:

打开Twitter身份验证窗口。 关闭Twitter身份验证窗口。 再次打开Twitter身份验证窗口。 输入正确的凭据并点击登录

后者总是导致401身份验证凭据丢失或异常不正确

我的问题是服务器正在重新启动Twitter身份验证过程,但RequestToken.getAuthenticationURL()的值没有正确地传递回UI,并导致它使用旧URL调用Twitter API


简而言之,确保客户端使用的身份验证URL与服务器期望的URL匹配。今天2015年5月2日,我使用twitter4j 3.0.x版本时遇到类似错误

直到我把twitter4j升级到4.0.0版,我才明白这一点

  <dependencies>
  <dependency>
      <groupId>org.twitter4j</groupId>
      <artifactId>twitter4j-core</artifactId>
      <version>[4.0,)</version>
  </dependency>
  ...

org.twitter4j
twitter4j核
[4.0,)
...

我也面临这个问题,需要正确的系统时间和API密钥/机密

事实证明,需要将回调URL设置为 设置完成后,您将看到Twitter授权屏幕


您还可以按“Test OAuth”使用OAuth工具对其进行测试,并将其作为POST请求的请求URI传递。

我遇到了相同的问题,并且已修复,如果设备日期和时间不正确,则会出现此问题。

检查您的所有身份验证凭据是否正确 a) 消费主义 b) 消费者信用 c) accessToken d) 存取令牌秘密 如果以上所有的都是正确的,它应该可以工作

另一种可能是系统不同步。例如,如果在数小时不活动后在虚拟机中运行,则系统会不同步。请重新启动系统,然后重试

您可以使用下面的build.sbt文件验证依赖关系

name := "sparkstreamingexamples"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-streaming" % "2.0.1",
  "org.apache.bahir" %% "spark-streaming-twitter" % "2.0.1",
"org.twitter4j" % "twitter4j-core" % "4.0.4"
)

你检查过你系统上的时间了吗?是的,我已经用ntpdate pool更新了好几次。ntp.orgupdate:这似乎只发生在某些用户身上。twitter似乎区分了无授权和无身份验证。无授权是否意味着时间线是私有的?是的,它几乎肯定意味着时间线是私有的,并且您尚未被授予跟踪问题用户的权限。如何设置回调\u url,它显示无效url。我使用的格式anything://twitterIssue 5年后仍然发生。不幸的是,这从来都不是解决办法。
name := "sparkstreamingexamples"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-streaming" % "2.0.1",
  "org.apache.bahir" %% "spark-streaming-twitter" % "2.0.1",
"org.twitter4j" % "twitter4j-core" % "4.0.4"
)