Java 缺少 Twitter4j 身份验证凭据

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20638190/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-13 03:16:38  来源:igfitidea点击:

Twitter4j authentication credentials are missing

javaandroidapitwittertwitter4j

提问by Nizar B.

I would like to make a tweet with Twitter4j in my Android app. Here is my code:

我想在我的 Android 应用程序中使用 Twitter4j 发一条推文。这是我的代码:

 //TWITTER SHARE.
@Click (R.id. img_btn_twitter)
@Background
public void twitterPostWall(){

    try {


        //Twitter Conf.
        ConfigurationBuilder cb = new ConfigurationBuilder();
        cb.setDebugEnabled(true)
                .setOAuthConsumerKey(CONSUMER_KEY)
                .setOAuthConsumerSecret(CONSUMER_SECRET)
                .setOAuthAccessToken(ACCESS_KEY)
                .setOAuthAccessTokenSecret(ACCESS_SECRET);

        TwitterFactory tf = new TwitterFactory(cb.build());
        Twitter twitter = new TwitterFactory().getInstance();
        twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);

        try {
            RequestToken requestToken = twitter.getOAuthRequestToken();

            Log.e("Request token: ", "" + requestToken.getToken());
            Log.e("Request token secret: ", "" + requestToken.getTokenSecret());
            AccessToken accessToken = null;


        }

        catch (IllegalStateException ie) {

            if (!twitter.getAuthorization().isEnabled()) {
                Log.e("OAuth consumer key/secret is not set.", "");
            }
        }


        Status status = twitter.updateStatus(postLink);
        Log.e("Successfully updated the status to [", ""  + status.getText() + "].");

    }

    catch (TwitterException te) {
        Log.e("TWEET FAILED", "");

    }
}

I always get this error message from Twitter4j: java.lang.IllegalStateException: Authentication credentials are missing. See http://twitter4j.org/en/configuration.htmlfor the detail. But as you can see I'm using builder to set my key. Can someone help me to fix it please? thanks.

我总是从 Twitter4j 收到此错误消息:java.lang.IllegalStateException:身份验证凭据丢失。有关详细信息,请参阅http://twitter4j.org/en/configuration.html。但是正如您所看到的,我正在使用 builder 来设置我的密钥。有人可以帮我解决吗?谢谢。

采纳答案by Ritesh Gune

Problem is following lines.

问题是以下几行。

TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = new TwitterFactory().getInstance();

You are passing the configuration to one TwitterFactoryinstance and using another TwitterFactoryinstance to get the Twitterinstance.

您将配置传递给一个TwitterFactory实例并使用另一个TwitterFactory实例来获取该Twitter实例。

Hence, You are getting java.lang.IllegalStateException: Authentication credentials are missing

因此,你得到 java.lang.IllegalStateException: Authentication credentials are missing

I suggest you to modify your code as follows:

我建议你修改你的代码如下:

    //Twitter Conf.
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
            .setOAuthConsumerKey(CONSUMER_KEY)
            .setOAuthConsumerSecret(CONSUMER_SECRET)
            .setOAuthAccessToken(ACCESS_KEY)
            .setOAuthAccessTokenSecret(ACCESS_SECRET);

    TwitterFactory tf = new TwitterFactory(cb.build());
    Twitter twitter = tf.getInstance();

And use this twitter instance. It will work.

并使用这个 twitter 实例。它会起作用。