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

How to get User Object using Twitter Api in Android SDK?

我正在创建一个 Android 应用程序。我在 Android.

中使用 Twitter 集成

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

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

这是我的主要 Activity 代码 ::

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 对象。

        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 : screen-name 即登录用户的 twitter-handle 可以从当前活动会话中获取 /*session*/.getUserName()

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