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