Как получить имя пользователя твиттера с помощью Twitter 4j

Я новичок в разработке 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);
        }
      }
    }

}

Как ТОЧНО я могу решить свою проблему?


person nchima    schedule 08.01.2012    source источник


Ответы (3)


Если у вас есть экранное имя пользователя Twitter, для которого вам нужно получить подробную информацию, вы можете использовать User user = twitter.showUser(screenName);. Теперь вы можете получить доступ к информации о пользователе с помощью функций получения на объекте user, например. user.getName(), user.getLocation() и т. д.

Не забудьте импортировать класс User в Eclipse. Как правило, вы также можете сделать это, нажав Ctrl+Shift+O в Eclipse.

person Pulkit Goyal    schedule 09.01.2012
comment
Привет, Пулкит, можешь помочь мне получить список подписчиков в Твиттере на Android? - person Ronak Mehta; 01.03.2012
comment
Привет, Пулкит Гоял, каким должно быть имя экрана здесь, в twitter.showUser(имя экрана) ??? - person Chirag_CID; 14.05.2012
comment
Это имя пользователя для пользователя, для которого вы хотите получить подробную информацию. - person Sapan Diwakar; 15.05.2012
comment
Вы можете получить creenName следующим образом: twitter.getScreenName() - person acoustic; 09.12.2012

Получите объект Twitter из сеанса после завершения входа в систему. Это можно использовать следующим образом для извлечения имени

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

Вы можете изучить несколько методов из класса User, чтобы получить различные атрибуты пользователя, такие как изображение профиля, длина списка друзей и т. д. @Vineet Bhatia

person Ajak6    schedule 12.02.2015

Используйте twitter.showUser() способ получения сведений о пользователе. Чтобы получить имя пользователя, выполните user.getName() Помните, что javadoc — ваш друг.

person Vineet Bhatia    schedule 08.01.2012
comment
user.getName() выдает мне сообщение об ошибке eclipse. Пользователь не может быть разрешен, а twitter.showUser() выдает ошибку. Метод twitter.showUser(String) в типе Twitter неприменим для аргументов () - person nchima; 09.01.2012
comment
И я просмотрел javadoc, мне это точно не помогает. - person nchima; 09.01.2012
comment
Можете ли вы опубликовать код, в котором вы вызываете метод showUser()? - person Vineet Bhatia; 09.01.2012