其他分享
首页 > 其他分享> > android-无法使用Fabric获取Twitter中的关注者列表

android-无法使用Fabric获取Twitter中的关注者列表

作者:互联网

我正在使用Fabric sdk for Twitter.在此,我可以按照其文档中的说明进行登录请求.现在,我不希望获得已登录用户的关注者列表,并在RecycleView中显示关注者名称和个人资料图片.我尝试了各种解决方案,例如:

private void getFollowersdReq(long userID) {
        showProgressDialog();


        JsonObjectRequest getRegisterReq = new JsonObjectRequest(Request.Method.GET,
                "https://api.twitter.com/1.1/followers/list.json?cursor=-1&&skip_status=true&include_user_entities=false&user_id=" + userID, null,
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        LogUtils.LOGD("Server Response", response.toString());
                        hideProgressDialog();
                    }
                }, new Response.ErrorListener() {

            @Override
            public void one rrorResponse(VolleyError error) {
                VolleyLog.d("server Error",
                        "Error: " + error.getMessage());
                Toast.makeText(getActivity(),
                        "Error:" + error.getMessage(), Toast.LENGTH_LONG).show();
                hideProgressDialog();
            }
        }) {

            /**
             * Passing some request headers
             * */
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();
                headers.put("Content-Type", "application/json");
                headers.put("Accept", "application/json");
                return headers;
            }

        };

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(getRegisterReq, new SignpostUrlStack(twitterToken, secret));

        // Cancelling request
        // ApplicationController.getInstance().getRequestQueue().cancelAll(tag_json_obj);
    }

在上面的代码中,我呼叫Twitter API以获取关注者列表,但是在此过程中,我得到了错误消息

{
    "errors": [
        {
            "code": 215,
            "message": "Bad Authentication data."
        }
    ]
}

我也尝试过

class MyTwitterApiClient extends TwitterApiClient {
        public MyTwitterApiClient(TwitterSession session) {
            super(session);
        }

        public CustomService getCustomService() {
            return getService(CustomService.class);
        }

        public UsersService getUsersService() {
            return getService(UsersService.class);
        }
    }

    interface CustomService {
        @GET("/1.1/followers/list.json")
        void show(@Query("user_id") Long userId,
                  @Query("screen_name") String var,
                  @Query("skip_status") Boolean var1,
                  @Query("include_user_entities") Boolean var2,
                  @Query("count") Integer var3, Callback<User> cb);
    }

    interface UsersService {
        @GET("/1.1/users/show.json")
        void show(@Query("user_id") Long userId,
                  @Query("screen_name") String screenName,
                  @Query("include_entities") Boolean includeEntities,
                  Callback<User> cb);
    }

将该类称为:

new MyTwitterApiClient(session).getCustomService().show(userID, null, true, true, 100, new Callback<User>() {
            @Override
            public void success(Result<User> result) {
                LogUtils.LOGI("Get success",result.toString());
            }

            @Override
            public void failure(TwitterException e) {
                hideProgressDialog();
            }
        });

通过这种方法,我也无法获得所需的输出.

解决方法:

第二种方法(使用TwitterApiClient)几乎是正确的,除了响应数据模型.有关响应的结构,请参见https://dev.twitter.com/rest/reference/get/followers/list.您需要根据此结构构建数据模型.
解决方法是:

//data model
public class Followers {
        @SerializedName("users")
        public final List<User> users;

        public Followers(List<User> users) {
            this.users = users;
        }
    }

class MyTwitterApiClient extends TwitterApiClient {
    public MyTwitterApiClient(TwitterSession session) {
        super(session);
    }

    public CustomService getCustomService() {
        return getService(CustomService.class);
    }

}

interface CustomService {@GET("/1.1/followers/list.json")
    void show(@Query("user_id") Long userId, @Query("screen_name") String
    var, @Query("skip_status") Boolean var1, @Query("include_user_entities") Boolean var2, @Query("count") Integer var3, Callback < Followers > cb);
}



new MyTwitterApiClient(session).getCustomService().show(userID, null, true, true, 100, new Callback < Followers > () {@Override
    public void success(Result < Followers > result) {
        Log.i("Get success", "" + result.data.users.size());
    }

    @Override
    public void failure(TwitterException e) {

    }
 });

上面的代码为我工作.希望能帮助到你!

标签:twitter-fabric,android,rest,twitter
来源: https://codeday.me/bug/20191013/1909266.html