Вчера я познакомился с 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». Любые идеи, которые могли бы мне помочь? :D
2 ответа
Перед тестированием кода вам необходимо убедиться в следующем:
- Зарегистрируйте свое приложение на странице https://apps.twitter.com/ и получите токены Oauth для подключения. ваше приложение в Twitter и выполните желаемое действие. Вы получите ConsumerKey,consumerAccessToken, accessKey и accessToken.
- Если вы хотите публиковать обновления, убедитесь, что вы настроили разрешения своего приложения на доступ для чтения и записи, доступ по умолчанию — только для чтения.
После того, как у вас есть необходимые токены доступа, вам нужно создать экземпляр 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);
Надеюсь это поможет.
ImageUpload.upload
— это не статический метод, а метод экземпляра.
Вам нужно создать экземпляр ImageUpload и вызвать метод из экземпляра.
Судя по документации ImageUpload, это интерфейс. Поэтому вам нужно создать экземпляр класса, реализующего ImageUpload.
TwitterUpload myInstance = TwitterUpload(conf, oauth)
поможет.
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.