我正在尝试使用twitter4j更新状态到twitter,但它不起作用

时间:2014-04-02 09:25:46

标签: twitter4j

我成功获得了所有凭据(Oauth_token,Oauth_verifier)。 有了它,我尝试将文本发布到Twitter帐户,但它始终失败,并显示错误消息“未发现身份验证挑战

我找到了一些像

这样的解决方案

“自动检查时区”, “导入最新的twitter4j库”等。

但检查后仍然无法正常工作。

有没有人可以告诉我。

代码如下所示

    public static void updateStatus(final String pOauth_token,final String pOauth_verifier) {
    new Thread() {
        public void run() {
            Looper.prepare();

            try {
                TwitterFactory factory = new TwitterFactory();
                AccessToken accessToken = new AccessToken(pOauth_token,pOauth_verifier);

                Twitter twitter = factory.getInstance();
                twitter.setOAuthConsumer(Cdef.consumerKey, Cdef.consumerSecret);
                twitter.setOAuthAccessToken(accessToken);

                if (twitter.getAuthorization().isEnabled()) {                   
                    Log.e("btnTwSend","인증값을 셋팅하였고 API를 호출합니다.");
                    Status status = twitter.updateStatus(Cdef.sendText + " #" + String.valueOf(System.currentTimeMillis()));
                    Log.e("btnTwSend","status:" + status.getText());
                }

            } catch (Exception e) {
                Log.e("btnTwSend",e.toString());
            }
        };
    }.start();
}

2 个答案:

答案 0 :(得分:0)

  

“未发现身份验证质疑”

我认为您在代码中缺少访问令牌密钥。这就是你得到这个例外的原因。

请尝试以下操作:

ConfigurationBuilder configurationBuilder;
Configuration configuration;

    // Set the proper configuration parameters
    configurationBuilder = new ConfigurationBuilder();

    configurationBuilder
        .setOAuthConsumerKey(TWITTER_CONSUMER_KEY);
    configurationBuilder
        .setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET);

    // Access token 
    configurationBuilder.setOAuthAccessToken(ACCESS_TOKEN);
    // Access token secret
    configurationBuilder
            .setOAuthAccessTokenSecret(ACCESS_TOKEN_SECRET);

    // Get the configuration object based on the params
    configuration = configurationBuilder.build();
    // Pass it to twitter factory to get the proprt twitter instance.
    twitterFactory = new TwitterFactory(configuration);
    twitter = twitterFactory.getInstance();

    // use this instance to update
    twitter.updateStatus("Your status");

答案 1 :(得分:0)

我终于找到了原因。

我认为参数名为'oauth_token','oauth_verifier'是accessstoken的成员, 但事实并非如此。

我只需要再通过一种方法来获得正确的密钥。

这种方式需要'oauth_token','oauth_verifier'才能获得accessstoken。

此代码必须在下面再添加一个代码:

mAccessToken = mTwitter.getOAuthAccessToken(REQUEST_TOKEN,OAUTH_VERIFIER);