上传图片twitter4j

问题描述 投票:0回答:2

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

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的非静态方法upload(File,String)进行静态引用”。有什么想法对我有帮助吗? :D

java twitter twitter4j
2个回答
6
投票

在测试代码之前,您需要确保遵循以下条件-

  1. https://apps.twitter.com/注册您的应用,并获取Oauth令牌,以便能够将您的应用连接到Twitter并执行所需的操作。您将获得一个consumerKey,consumerAccessToken,accessKey和accessToken。
  2. 如果您要发布更新,请确保您配置了应用拥有读取和写入访问权限,默认访问权限为读取仅。

拥有必需的访问令牌后,需要使用这些令牌实例化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(statusMessage);
status.setMedia(file); // set the image to be uploaded here.
twitter.updateStatus(status);

希望这会有所帮助。


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.