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

Hui*_*ege 0 oauth twitter4j twitter-oauth

我正在开发一个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();
        }
Run Code Online (Sandbox Code Playgroud)

例外是:

Twitter凭据验证fails.java.lang.IllegalStateException:缺少身份验证凭据.有关详细信息,请参见 http://twitter4j.org/en/configuration.html

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

MWi*_*ner 6

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

验证凭据丢失.

在尝试以编程方式访问Twitter API之前,您需要首先正确进行身份验证.仅使用setOAuthConsumer(key, secret)不设置/配置必要的访问令牌信息.需要提供这两种信息(提示:如果您对此感兴趣,本简介将概述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();
Run Code Online (Sandbox Code Playgroud)

如果有效的AccessToken/AccessTokenSecret,您应该能够调用:

try {
    User user = twitter.verifyCredentials(); 
    // ... do further things....
} catch (Exception e) {
        e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.