Twitter4J是否有办法仅使用消费者密钥和密钥来验证凭证?

时间:2016-01-29 18:47:36

标签: oauth twitter-oauth twitter4j

我正在开发一款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凭证验证fails.java.lang.IllegalStateException:   验证凭据丢失。看到   http://twitter4j.org/en/configuration.html了解详情

有没有办法验证没有访问令牌和访问令牌访问的消费者密钥和密钥?

1 个答案:

答案 0 :(得分:6)

您遇到的异常消息非常清楚:

  

缺少身份验证凭据。

在尝试以编程方式访问Twitter API之前,您需要首先正确进行身份验证。仅使用setOAuthConsumer(key, secret)不会设置/配置必要的访问令牌信息。需要提供这两种信息(提示:如果您对此感兴趣,http://api.jquery.com/unload/会概述 OAuth 身份验证的工作原理。

根据this introduction,您可以通过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();
}

希望它有所帮助。