【问题标题】:Post a tweet with Android API使用 Android API 发布推文
【发布时间】:2011-03-17 16:00:00
【问题描述】:

我一直在寻找一种使用我的 Android 应用程序发布推文的方法,但我发现的所有东西都不起作用。

我不得不承认 Twitter 的 API 不是那么容易理解,但我的代码并不长,而且我看不出我的错误在哪里。

这是我的代码:

public class PartagerTwitter extends Activity {

    private CommonsHttpOAuthConsumer httpOauthConsumer;
    private OAuthProvider httpOauthprovider;
    public final static String consumerKey = XXX;
    public final static String consumerSecret = XXX;
    private final String CALLBACKURL = "myapp://twitactivity";
    private Twitter twitter;

    @Override

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        try {
            httpOauthConsumer = new CommonsHttpOAuthConsumer(consumerKey, consumerSecret);
            httpOauthprovider = new DefaultOAuthProvider("https://twitter.com/oauth/request_token",
                    "https://twitter.com/oauth/access_token",
            "https://twitter.com/oauth/authorize");
            String authUrl = httpOauthprovider.retrieveRequestToken(httpOauthConsumer, CALLBACKURL);

            this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onNewIntent(Intent intent) {

        super.onNewIntent(intent);  
        Uri uri = intent.getData();
        Log.i("test", uri.toString());  
        if (uri != null && uri.toString().startsWith(CALLBACKURL)) {
            String verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);
            try {
                httpOauthprovider.retrieveAccessToken(httpOauthConsumer, verifier);     
                twitter = new TwitterFactory().getInstance();
                twitter.setOAuthConsumer(consumerKey, consumerSecret);

                RequestToken requestToken = twitter.getOAuthRequestToken(CALLBACKURL); 
                AccessToken accessToken = twitter.getOAuthAccessToken(requestToken);
                String token = accessToken.getToken(), 
                secret = accessToken.getTokenSecret();

                accessToken = new AccessToken(token,secret);
                Twitter twitter = new TwitterFactory().getOAuthAuthorizedInstance(consumerKey,consumerSecret,accessToken);
                twitter.updateStatus("My First Status Update");
            } catch (Exception e) {
                e.printStackTrace();

            }
        }
    }
}

当然,我的钥匙不是 XXX。 还有一个问题,登录后是否可以关闭 Twitter 窗口并将我的活动置于前台?

【问题讨论】:

    标签: java android twitter twitter4j


    【解决方案1】:

    请查看the following blog post,获取完整的端到端指南,以便从 Android 应用发布到 Twitter。

    它还在Github 中包含一个可运行的 Android 示例。

    【讨论】:

      【解决方案2】:

      在 Twitter 开发站点中创建具有读/写权限的应用,为您的应用生成访问令牌。

      使用以下代码更新状态

      public static void main(String[] args) {
      
          String CONSUMER_KEY = "YOUR_CONSUMER_KEY";
          String CONSUMER_SECRET = "YOUR_CONSUMER_SECRET";
          String ACCESS_SECRET = "YOUR_ACCESS_SECRET";
          String ACCESS_TOKEN = "YOUR_ACCESS_TOKEN";
      
          // Consumer
          Twitter twitter = new TwitterFactory().getInstance();
          twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
      
          // Access Token
          AccessToken accessToken = null;
          accessToken = new AccessToken(ACCESS_TOKEN, ACCESS_SECRET);
          twitter.setOAuthAccessToken(accessToken);
      
          // Posting Status
          Status status = null;
          try {
              status = twitter.updateStatus("YOUR_STATUS");
          } catch (TwitterException e) {
              e.printStackTrace();
          }
          System.out.println("Successfully updated the status: "
                  + status.getText());
      }
      

      【讨论】:

        猜你喜欢
        • 2015-08-23
        • 2021-12-31
        • 2015-10-16
        • 2013-07-06
        • 2020-03-15
        • 2012-04-01
        • 1970-01-01
        • 2012-05-20
        • 2013-10-20
        相关资源
        最近更新 更多