有没有办法让 Twitter4J 仅使用消费者密钥和秘密来验证凭据?

Is there a way for Twitter4J to verify credentials by only using consumer key and secret?

我正在开发一个 Android 应用程序,它允许用户自行配置 Twitter 消费者密钥和机密(未配置访问令牌和访问令牌机密)。我想在显示登录页面之前像下面这样验证密钥和机密,但它抛出异常:

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 credential verification fails.java.lang.IllegalStateException: Authentication credentials are missing. See http://twitter4j.org/en/configuration.html for details

有没有办法在没有访问令牌和访问令牌访问的情况下验证消费者密钥和秘密?

您遇到的异常信息很清楚:

Authentication credentials are missing.

在尝试以编程方式访问 Twitter API 之前,您需要先进行正确的身份验证。仅使用 setOAuthConsumer(key, secret) 不会 set/configure 必要的访问令牌信息。这两种信息都需要提供(提示:如果您对此感兴趣,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();
}

希望对您有所帮助。