【问题标题】:How to retrieve a twitter user's name using Twitter 4j如何使用 Twitter 4j 检索 Twitter 用户名
【发布时间】:2012-02-05 04:12:03
【问题描述】:

我是 android 开发的新手(和一般的 java)。我正在构建一个应用程序,该应用程序要求用户通过登录他们的 twitter 帐户进行注册,从该帐户导入和保存他们的基本信息。所需的信息是生日、姓名(全名)、用户名、位置、性别等。 我正在使用 twitter4j 来实现这一点。我试过查看 twitter4j 文档,但作为一个 android 新手(和一般的 java),文档有点难以理解,所以我似乎无法让它做一些除了设置状态更新之外的事情。

这是我活动中的代码:

package cc.co.localsquare.app;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Toast;
import oauth.signpost.OAuthProvider;
import oauth.signpost.basic.DefaultOAuthProvider;
import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;
import oauth.signpost.exception.OAuthCommunicationException;
import oauth.signpost.exception.OAuthExpectationFailedException;
import oauth.signpost.exception.OAuthMessageSignerException;
import oauth.signpost.exception.OAuthNotAuthorizedException;
import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.http.AccessToken;

public class ConnectTwitterActivity extends BaseActivity {

  public final static String CONSUMER_KEY = "valid key";
  public final static String CONSUMER_SECRET = "valid secret";
  public final static String CALLBACK_URL = "localsquare://ConnectTwitterActivity2";

  private CommonsHttpOAuthConsumer commonHttpOAuthConsumer;
  private OAuthProvider authProvider;

  private Twitter twitter;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.connect_twitter);

        commonHttpOAuthConsumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
        authProvider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token",
            "http://twitter.com/oauth/access_token", "http://twitter.com/oauth/authorize");
        try {
      String oAuthURL = authProvider.retrieveRequestToken(commonHttpOAuthConsumer, CALLBACK_URL);
      this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(oAuthURL)));
    } catch (OAuthMessageSignerException e) {
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
      e.printStackTrace();
    } catch (OAuthNotAuthorizedException e) {
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
      e.printStackTrace();
    } catch (OAuthExpectationFailedException e) {
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
      e.printStackTrace();
    } catch (OAuthCommunicationException e) {
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
      e.printStackTrace();
    }
    }

    protected void onNewIntent(Intent intent) {
      super.onNewIntent(intent);

      Uri uri = intent.getData();
      if (uri != null && uri.toString().startsWith(CALLBACK_URL)) {
        String verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);
        try {
          authProvider.retrieveAccessToken(commonHttpOAuthConsumer, verifier);

          AccessToken accessToken = new AccessToken(commonHttpOAuthConsumer.getToken(),
              commonHttpOAuthConsumer.getTokenSecret());

          twitter = new TwitterFactory().getInstance();
          twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);

          twitter.setOAuthAccessToken(accessToken);

          // Alternate way:
          // twitter = new TwitterFactory().getOAuthAuthorizedInstance(CONSUMER_KEY, CONSUMER_SECRET,
          //     new AccessToken(commonHttpOAuthConsumer.getToken(), commonHttpOAuthConsumer.getTokenSecret()));

          // Tweet message to be updated.
          String tweet = "Hi there, This was sent from my application - OAuth, Twitter";
          twitter.updateStatus(tweet);

        }
        catch (Exception e) {
          Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG);
        }
      }
    }

}

我该如何解决我的问题?

【问题讨论】:

    标签: android twitter twitter4j


    【解决方案1】:

    如果您有需要获取详细信息的 twitter 用户的屏幕名称,那么您可以使用 User user = twitter.showUser(screenName);。现在您可以通过对象 user 上的 getter 函数访问有关用户的信息,例如user.getName()user.getLocation()

    记得在 Eclipse 中导入 User 类。通常你也可以通过在 Eclipse 中按 Ctrl+Shift+O 来完成。

    【讨论】:

    • 嗨 pulkit 可以帮我在 android 中获取 twitter 关注者列表
    • 嘿 Pulkit Goyal,twitter.showUser(screenName) 中的 screenName 应该是什么???
    • 您想要详细信息的用户的用户名。
    • 您可以通过以下方式获取“creenName”:twitter.getScreenName()
    【解决方案2】:

    登录完成后从会话中获取 twitter 对象。那可以用下面的方式来提取名字

       Twitter twitter = (Twitter) request.getSession().getAttribute("twitter");
                long userID = twitter.getId();
                twitter4j.User newUser=twitter.showUser(twitter.getScreenName());
                String name=newUser.getName();
    

    您可以从 User 类中探索几种方法来获取用户的不同属性,例如头像、friendlistlength 等 @Vineet Bhatia

    【讨论】:

      【解决方案3】:

      使用twitter.showUser() 方法获取用户详细信息。要获取用户名,请执行 user.getName() 记住 javadoc 是你的朋友。

      【讨论】:

      • user.getName() 给我一个 Eclipse 错误消息“无法解析用户”,而 twitter.showUser() 给我一个错误“Twitter 类型中的方法 twitter.showUser(String) 不是适用于参数 ()"
      • 我看过 javadoc,对我没有帮助。
      • 你能把调用showUser()方法的代码贴出来吗?
      猜你喜欢
      • 2011-10-23
      • 2011-10-22
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 2018-09-14
      • 1970-01-01
      • 2012-05-09
      相关资源
      最近更新 更多