如何使用Android SDK中的Twitter Api获取用户对象?

如何使用Android SDK中的Twitter Api获取用户对象?

问题描述:

我正在创建一个Android应用程序。我在Android中使用Twitter集成。如何使用Android SDK中的Twitter Api获取用户对象?

我的需要
我要访问的用户对象从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的用户对象。我不知道如何。请告诉如何调用并获取对象。

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

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

    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的会议:这可以从TwitterCore.getInstance().getSessionManager().getActiveSession()获取。

叽叽喳喳-AUTH-配置:这可以从TwitterCore.getInstance().getAuthConfig()

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

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