【问题标题】:How to get User Object using Twitter Api in Android SDK?如何在 Android SDK 中使用 Twitter Api 获取用户对象?
【发布时间】:2018-04-02 10:25:18
【问题描述】:

我正在创建一个 Android 应用。我在 Android 中使用 Twitter 集成。

我的需要
我想从 Twitter 访问用户对象 https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/user-object

我的工作
我使用 Twitter 成功实现了登录。

这是我的主要活动代码::

public class MainActivity extends AppCompatActivity {

    TwitterLoginButton loginButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        TwitterConfig config = new TwitterConfig.Builder(this)
                .logger(new DefaultLogger(Log.DEBUG))
                .twitterAuthConfig(new TwitterAuthConfig(getString(R.string.twitter_consumer_key), getString(R.string.twitter_consumer_secret)))
                .debug(true)
                .build();
        Twitter.initialize(config);

        setContentView(R.layout.activity_main);

        loginButton = (TwitterLoginButton) findViewById(R.id.login_button);

        loginButton.setCallback(new Callback<TwitterSession>() {
            @Override
            public void success(Result<TwitterSession> result) {
                // Do something with result, which provides a TwitterSession for making API calls

                TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();
                TwitterAuthToken authToken = session.getAuthToken();
                String token = authToken.token;
                String secret = authToken.secret;

                Intent intent =new Intent(getApplicationContext(), ProfilePage.class);
                intent.putExtra("token",token);
                startActivity(intent);






            }

            @Override
            public void failure(TwitterException exception) {
                // Do something on failure
            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // Pass the activity result to the login button.
        loginButton.onActivityResult(requestCode, resultCode, data);
    }
   }

我的问题:
现在我想访问 Twitter Api 的用户对象。我不知道怎么做。请告诉如何调用和获取对象。

【问题讨论】:

    标签: android json twitter twitter-oauth twitter4j


    【解决方案1】:

    可以通过Retrofit 调用 API 来获取用户对象。 如果您已经包含 Twitter 工具包,则不必在项目中明确包含 Retrofit。

    1. 使用 twitter-kit 中提供的新 OAuth1aInterceptor 创建 Retrofit 对象。

          retrofit = new Retrofit.Builder()
                      .baseUrl("https://api.twitter.com/1.1/")
                  .addConverterFactory(GsonConverterFactory.create())
                  // Twitter interceptor
                  .client(new OkHttpClient.Builder()
                          .addInterceptor(new OAuth1aInterceptor(/*twitter-session*/, /*twitter-auth-config*/))
                          .build())
                  .build(); 
      
    2. 像往常一样为Retrofit Client 创建一个Interface

          import com.twitter.sdk.android.core.models.User;
          import retrofit2.Call;
          import retrofit2.http.GET;
          import retrofit2.http.Query;
      
          public interface ApiInterface {
      
              @GET("users/show.json")
              Call<User> getUserDetails(@Query("screen_name") String screenName);
      
          }
      
    3. 调用ApiInterface函数getUserDetails()

          ApiInterface apiInterface = retrofit.create(ApiInterface.class);
          Call<User> call = apiInterface.getUserDetails(/*screen-name*/);
          call.enqueue(new Callback<User>() {
              @Override
              public void onResponse(Call<User> call, Response<User> response) {
      
              }
      
              @Override
              public void onFailure(Call<User> call, Throwable t) {
      
              }
          });
      

    twitter-session :这可以从TwitterCore.getInstance().getSessionManager().getActiveSession()获取。

    twitter-auth-config :这可以从TwitterCore.getInstance().getAuthConfig()获取

    screen-name : 可以从当前活动会话/*session*/.getUserName() 中获取登录用户的screen-nametwitter-handle

    ~ Twitter API 参考索引https://developer.twitter.com/en/docs/api-reference-index

    【讨论】:

      猜你喜欢
      • 2021-04-01
      • 1970-01-01
      • 2017-10-15
      • 2016-05-18
      • 2011-05-05
      • 2013-07-22
      • 2013-01-28
      • 1970-01-01
      • 2014-09-03
      相关资源
      最近更新 更多