You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用twitter4j无法点赞推文,其余功能正常求问题排查

问题:使用twitter4j调用createFavorite方法报错,其他方法正常

我在使用twitter4j库进行Twitter操作时,发现除createFavorite(点赞推文)方法外,twitter实例的其他方法均可正常运行,但调用该方法时出现错误。

相关代码

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import twitter4j.TwitterFactory;
import twitter4j.conf.ConfigurationBuilder;

public class TwitterAutoLikerPart1 {
    private static Logger logger = LoggerFactory.getLogger(TwitterAutoLikerPart1.class);

    public static void main(String[] args) throws Exception {
  
        ConfigurationBuilder cb = new ConfigurationBuilder();
        cb.setDebugEnabled(true)
                .setOAuthConsumerKey("E")
                .setOAuthConsumerSecret("F")
                .setOAuthAccessToken("G")
                .setOAuthAccessTokenSecret("H");

        TwitterFactory tf = new TwitterFactory(cb.build());
        var twitter = tf.getInstance();
        long tweetid=tweetid;
        logger.info("Tweet id is "+tweetid);
        logger.info(twitter.createFavorite(tweetid).getText());
       /*
Whereas this is working 
 for(var x:twitter.getFavorites())
            logger.info(x.toString());*/

    }
}

报错日志

Exception in thread "main" 401:Authentication credentials (https://dev.twitter.com/pages/auth) were missing or incorrect. Ensure that you have set valid consumer key/secret, access token/secret, and the system clock is in sync.
{"request":"/1.1/favorites/create.json","error":"Read-only application cannot POST."}

Relevant discussions can be found on the Internet at:
    http://www.google.co.jp/search?q=038fb9e8 or
    http://www.google.co.jp/search?q=480cbeca
TwitterException{exceptionCode=[038fb9e8-480cbeca], statusCode=401, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=4.0.7}
    at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:170)
    at twitter4j.HttpClientBase.request(HttpClientBase.java:57)
    at twitter4j.HttpClientBase.post(HttpClientBase.java:86)
    at twitter4j.TwitterImpl.post(TwitterImpl.java:2102)
    at twitter4j.TwitterImpl.createFavorite(TwitterImpl.java:1241)
    at com.twiiterapi.mt.twitterapi.TwitterAutoLikerPart1.main(TwitterAutoLikerPart1.java:30)

Process finished with exit code 1

问题排查与解决

编辑补充:经Andy Piper先生指出,问题源于应用权限设置,修改权限后功能恢复正常。

核心原因

报错日志里的Read-only application cannot POST是关键提示:

  • 当前Twitter开发者应用的权限为只读权限,createFavorite属于需要修改数据的POST操作,只读权限不允许执行这类写操作
  • 而getFavorites这类正常运行的方法都是只读的GET请求,所以不受权限限制

解决步骤

  1. 登录Twitter开发者平台,找到你的目标应用
  2. 进入应用的「权限与功能」设置界面
  3. 将应用权限从「只读」升级为「读写」(或根据实际需求选择更高权限)
  4. 权限更新后,重新生成OAuth访问令牌(旧令牌会因权限变更失效)
  5. 替换代码中的OAuth密钥信息,重新运行程序即可恢复正常

内容的提问来源于stack exchange,提问作者Dev_panda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:40:49