上传图片twitter4j

时间:2015-01-29 15:45:21

标签: java twitter twitter4j

我昨天向Twitter4j介绍了自己,现在正在测试我即将推出的程序的功能。正如标题所示,我试图将图像上传到推特,没有任何运气。这是我的代码:

import static java.awt.Toolkit.getDefaultToolkit;
import static javax.swing.JOptionPane.ERROR_MESSAGE;
import static javax.swing.JOptionPane.showMessageDialog;

import java.awt.Image;
import java.io.File;

import javax.swing.Icon;
import javax.swing.ImageIcon;

import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.examples.tweets.UploadMultipleImages;
import twitter4j.media.ImageUpload;
import twitter4j.media.ImageUploadFactory;

public final class UpdateStatus {

static File file = new File("/images/Done.jpg");

public static void main(String[] args) {

    for(int i=0;i<2;i++){
        Twitter twitter = new TwitterFactory().getInstance();

        Status status=null;
        try {

            ImageUpload.upload(file,"22");

        } catch (TwitterException e) {
            System.err.println("Shit...");
            System.exit(3);
        }

    }

    System.out.println("Done");

}
}

我要上传的图片是Done.jpg,位于包中的文件夹中。我已经将这种方法用于其他程序中的图像,所以我很确定它的工作原理。但是,在运行代码之前,这给了我一条错误消息,说“无法对ImageUpload类型的非静态方法上传(File,String)进行静态引用”。任何可以帮助我的想法? :d

2 个答案:

答案 0 :(得分:6)

在测试代码之前,您需要确保关注 -

  1. https://apps.twitter.com/注册您的应用并获取Oauth令牌,以便能够将您的应用连接到Twitter并执行所需的操作。 您将获得consumerKey,consumerAccessToken,accessKey和accessToken。
  2. 如果您要发布更新,请确保配置您的应用 具有读写权限的权限,deafult访问权限为Read 仅
  3. 获得所需的访问权限后,您需要使用这些令牌实例化Twitter实例。然后,可以使用此实例执行必要的操作。请参阅下面的示例代码以上传图片 -

    ConfigurationBuilder twitterConfigBuilder = new ConfigurationBuilder();
    twitterConfigBuilder.setDebugEnabled(true);
    twitterConfigBuilder.setOAuthConsumerKey("consumerkey");
    twitterConfigBuilder.setOAuthConsumerSecret("consumersecret");
    twitterConfigBuilder.setOAuthAccessToken("accesstoken");
    twitterConfigBuilder.setOAuthAccessTokenSecret("accesstokensecret");
    
    Twitter twitter = new TwitterFactory(twitterConfigBuilder.build()).getInstance();
    String statusMessage = "Watch out this interesting offer I came across today";
    File file = new File("/images/Done.jpg"); 
    
    StatusUpdate status = new StatusUpdate(message);
    status.setMedia(file); // set the image to be uploaded here.
    twitter.updateStatus(status);
    

    希望这有帮助。

答案 1 :(得分:0)

ImageUpload.upload不是静态方法,而是实例方法。

您需要创建ImageUpload的实例,并从实例中调用该方法。

检查documentation of ImageUpload,它是一个界面。因此,您需要实例化一个实现ImageUpload的类。