如何使用Twitter4j API回复一条推特?

8

我正在处理 Twitter 相关的工作,我已经获得了访问令牌并且可以获取推文。现在我想要对这些推文进行回复,就像我们在 Twitter 网站上所做的那样。为此,我使用了下面的代码,但是它不会回复推文,只会更新我的状态。请帮助我解决这个问题。谢谢。

public void tweetReply() {
    try {
        // System.out.println("Post Id= " + itemsObj.postId);
        AccessToken a = new AccessToken(twittertokens[0], twittertokens[1]);
        Twitter twitter = new TwitterFactory().getInstance();

        twitter = new TwitterFactory().getInstance();
        twitter.setOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
        twitter.setOAuthAccessToken(a);
        Long id = new Long("236178766597087234");
        twitter.updateStatus(new StatusUpdate("@lalitrajput024  this is to test For reply option ").inReplyToStatusId(id));

    } catch (Exception e) {
        // TODO: handle exception
    }
}

我在Stack Overflow上解决了这个问题.. 请访问此链接https://dev59.com/AmrWa4cB1Zd3GeqP8Tnu。这个链接的答案很有用!希望它能帮到你! - Akash Singh
3个回答

8

我之前也遇到了这个问题,后来我尝试将处理程序放在文本本身中。现在看来它好像可以正常工作了。

public static void reply(long inReplyToStatusId,String text,double latitude,double longitude,TwitterFactory factory) throws TwitterException
{   AccessToken accessToken = loadAccessToken();
    Twitter twitter = factory.getInstance();
    twitter.setOAuthConsumer(consumerKey, consumerSecrate);
    twitter.setOAuthAccessToken(accessToken);


    StatusUpdate stat= new StatusUpdate(text);

    stat.setInReplyToStatusId(inReplyToStatusId);


    GeoLocation location= new GeoLocation(latitude, longitude);
    stat.setLocation(location);

    twitter.updateStatus(stat);
 }'

我称之为

            reply(238912922250792960l, "@praveena_kd testing reply", 12.787, 77.7578, factory);

0

我没有足够的声望来发表评论,所以我把这个作为答案,因为我卡在这里有一段时间了。正如@praveena_kd所说,这段代码是有效的。

String answer = "replying to @" + userNick + ": ...";
StatusUpdate statusReply = new StatusUpdate(answer);
  statusReply.setInReplyToStatusId(statusId);
  try {
    twitter.updateStatus(statusReply);
      } catch (TwitterException ex) {
      // handle exception
  }

但是要注意在回复中加入@用户昵称,否则发件人的时间轴上不会显示!何处添加呢?

String userNick = status.getUser().getScreenName();

0
你需要将用户名添加到响应中,在Twitter4j中,这被称为screenName

例如:

String username = status.getUser().getScreenName();

String answer = "@".concat(username).concat(" 在此输入您的响应");


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接