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

时间:2017-10-21 11:32:28

标签: android json twitter twitter-oauth twitter4j

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

我的需要
我想从Twitter https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/user-object

中访问Twitter中的用户对象

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

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

df %>%  
  mutate(horizon = factor(horizon, levels = c("L","F","H","B","A"))) %>%
  ggplot(aes(site, value)) + geom_col(aes(fill = horizon)) + labs(y = "Soil depth (cm)")+
  scale_fill_discrete(breaks = c("L","F","H","A","B"))

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

1 个答案:

答案 0 :(得分: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. 像往常一样为Interface创建Retrofit Client

        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) {
    
            }
        });
    
  4. twitter-session:这可以从TwitterCore.getInstance().getSessionManager().getActiveSession()获取。

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

    获取

    screen-name:可以从当前活动会话screen-name

    获取twitter-handle,即已登录用户的/*session*/.getUserName()

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