首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java中使用Twitter (1.1版)发布上传媒体状态

在Java中使用Twitter (1.1版)发布上传媒体状态
EN

Stack Overflow用户
提问于 2013-10-21 07:23:29
回答 2查看 3.1K关注 0票数 1

我想知道如何使用java在twitter上上传媒体来更新我的状态。目前,我的代码工作良好,没有使用Twitter4J Library 链接包含媒体上传脚本,但我不知道如何使用twitter以自己的状态上传媒体,并使用当前的Twitter4j代码进行微调。Twitter上传媒体API参考

我搜索了我的解决方案并找到了链接使用图像(gitHub)发布状态更新,但是这个引用非常复杂,因为它基本上是在使用PApplet。我想用没有扩展papplet类的普通http post来实现它。

是否有任何帮助/教程显示JAVA上媒体(图像)的Post状态?

EN

回答 2

Stack Overflow用户

发布于 2013-10-21 07:33:25

你可以试试这样的东西:

代码语言:javascript
运行
复制
        String accesst = "ACCESS_TOKEN";
        String accessts = "TOKEN_SECRET";
        ConfigurationBuilder builder = new ConfigurationBuilder();
        builder.setOAuthAccessToken(accesst);
        builder.setOAuthAccessTokenSecret(accessts);
        builder.setOAuthConsumerKey("CLIENT_ID");
        builder.setOAuthConsumerSecret("CLIENT_SECRET");
        OAuthAuthorization auth = new OAuthAuthorization(builder.build());
        Twitter twitter_auth = new TwitterFactory().getInstance(auth);
        String screenName = twitter_auth.getScreenName();

        StatusUpdate status = new StatusUpdate("STATUS_TEXT");
        status.setMedia(new File("YOUR_FILE_PATH"));// BY SPECIFYING FILE PATH
        //status.setMedia("File name", new FileInputStream("")); // By InputStream
        Status updateStatus = twitter_auth.updateStatus(status);
        long id = updateStatus.getId(); // id of the status posted

用于从任何url张贴图像:

代码语言:javascript
运行
复制
        String img_url = "http://www.qualitywallpapers.net/w/media/original/2013/02/23/Twitter-bird-logo-PNG.png";
        URL url1 = new URL(img_url);
        BufferedImage image = ImageIO.read(url1);
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        ImageIO.write(image, "image/png", os);
        InputStream is = new ByteArrayInputStream(os.toByteArray());
        status.setMedia("hello", is);// By Stream
票数 1
EN

Stack Overflow用户

发布于 2013-10-24 06:13:37

我使用Twitter4j 3.0.4和Twitter4j 3.0.4 -媒体库解决了我的问题。你可以通过单击此处下载它

** TWITTER工作代码上带有图像的Tweet状态发布。

代码语言:javascript
运行
复制
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;
import twitter4j.auth.OAuthAuthorization;
import twitter4j.auth.RequestToken;
import twitter4j.User;

import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
import twitter4j.media.ImageUpload;
import twitter4j.media.ImageUploadFactory;
import twitter4j.media.MediaProvider;

import java.io.File;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public final class PostWithImage {


    /**
     * Developer : Waqas Ghouri
     * Email     : waqas_ghouri89@hotmail.com
     * @param args message
     */
    public static void main(String[] args) throws TwitterException {

        String UserAccessToken = null;
        String UserAccessSecret = null;

        try {

            Twitter twitter = new TwitterFactory().getInstance();


             //Set Your Application Consumer Key & Consumer Key Secret
             twitter.setOAuthConsumer("xxxxxxxxxxxx","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

            try {
                // get request token.
                // this will throw IllegalStateException if access token is already available
                RequestToken requestToken = twitter.getOAuthRequestToken();
                System.out.println("Got request token.");
                System.out.println("Request token: " + requestToken.getToken());
                System.out.println("Request token secret: " + requestToken.getTokenSecret());


                AccessToken accessToken = null;


                // to check this example set you callback URL to empty. If your application 
                // callback URL is defined then URL generated by below code should be redirected
                // to callback URL, so when we set callback URL to empty it shows PIN CODE to access OAUTH

                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                while (null == accessToken) {
                    System.out.println("Open the following URL and grant access to your account:");
                    System.out.println(requestToken.getAuthorizationURL());
                    System.out.print("Enter the PIN(if available) and hit enter after you granted access.[PIN]:");
                    String pin = br.readLine();
                    try {
                        if (pin.length() > 0) {
                            accessToken = twitter.getOAuthAccessToken(requestToken, pin);
                        } else {
                            accessToken = twitter.getOAuthAccessToken(requestToken);
                        }
                    } catch (TwitterException te) {
                        if (401 == te.getStatusCode()) {
                            System.out.println("Unable to get the access token.");
                        } else {
                            te.printStackTrace();
                        }
                    }
                }
                System.out.println("Got access token.");
                UserAccessToken = accessToken.getToken();
                UserAccessSecret = accessToken.getTokenSecret();
                System.out.println("Access token: " + UserAccessToken);
                System.out.println("Access token secret: " + UserAccessSecret);


            } catch (IllegalStateException ie) {
                // access token is already available, or consumer key/secret is not set.
                if (!twitter.getAuthorization().isEnabled()) {
                    System.out.println("OAuth consumer key/secret is not set.");
                    System.exit(-1);
                }
            }

            //Fetching User Information
            //User Information from twitter.
            System.out.println("Connecting.... ");
            System.out.println("Twitter Connected To : ");

            User user = twitter.showUser(twitter.getId());
            System.out.print(user.getScreenName());
            if (user.getStatus() != null) {
                System.out.println("@" + user.getScreenName() + " - " + user.getStatus().getText());
            } else {
                // the user is protected
                System.out.println("@" + user.getScreenName());
            }


            // If you want simple post on status uncomment below code

            //System.out.println("Trying to simple post");      
            //Status status = twitter.updateStatus("Normal Post on Twitter Statsus");


            // Below code post with image and message           
            System.out.println("Now Try to upload Image");


            // Specify the image path in you system ( windows / unix / mac what ever)
            // ex(windows) : C:\imagepost.png
                    // ex(linux)   : /home/waqas/imagepost.png  
            String ImagePath = null;
            br = new BufferedReader(new InputStreamReader(System.in));
            while (null == ImagePath) {
                System.out.println("Please Type Image Path: ");
                String path = br.readLine();
                if (path.length() > 0) {
                    ImagePath = path;
                } else {
                    path = "";
                    System.exit(-1);
                }
            }


            // type your message(status)
            String Message = null;
            br = new BufferedReader(new InputStreamReader(System.in));
            while (null == Message) {
                System.out.println("Please type your message: ");
                String msg = br.readLine();
                if (msg.length() > 0) {
                    Message = msg;
                } else {
                    Message = "";
                    System.exit(-1);
                }
            }


             try {

                    Configuration conf = new ConfigurationBuilder()
                                        .setOAuthConsumerKey("xxxxxx(OAuth Consumer Key)xxxxxx")
                                        .setOAuthConsumerSecret("xxxxxxxxxx(OAuth Consumer Secret)xxxxxxxx")
                                        .setOAuthAccessToken(UserAccessToken)
                                        .setOAuthAccessTokenSecret(UserAccessSecret).build();


                    OAuthAuthorization auth = new OAuthAuthorization(conf);
                    ImageUpload upload = new ImageUploadFactory(conf).getInstance(auth);

                    String url;
                    if (ImagePath.length()>0) {
                        url = upload.upload(new File(ImagePath), Message);
                    } else {
                        url = upload.upload(Message,null);
                    }
                    System.out.println("Successfully uploaded image to Twitpic at " + url);
                    System.exit(0);
                } catch (TwitterException te) {
                    te.printStackTrace();
                    System.out.println("Failed to upload the image: " + te.getMessage());
                    System.exit(-1);
                }

            System.exit(0);


        } catch (TwitterException te) {
            //te.printStackTrace();
            System.out.println("Failed to get timeline: " + te.getMessage());
            System.exit(-1);
        } catch (IOException ioe) {
            ioe.printStackTrace();
            System.out.println("Failed to read the system input.");
            System.exit(-1);
        }
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19488410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档