Невозможно получить список подписчиков в твиттере с помощью Fabric Android
Я использую Fabric SDK для Twitter. В этом я могу сделать запрос входа в систему, как это описано в его документе. Теперь я не хочу получать список подписчиков вошедшего в систему пользователя и показывать в виде списка. Я перепробовал много ссылок, но эти ссылки не работают для меня
Как получить список подписчиков с помощью Twitter Fabric Android?
Невозможно получить список подписчиков в Twitter, используя Fabric
Затем я попробовал этот код, но все равно мое приложение зависало каждый раз, когда я запускаю его.
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")
Call<User> 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<User>() {
@Override
public void success(Result<User> result) {
LogUtils.LOGI("Get success",result.toString());
}
@Override
public void failure(TwitterException e) {
hideProgressDialog();
}
});
По этому методу я не могу получить последователей. Благодарю.
1 ответ
Вы должны использовать обновленную версию Retrofit2.
Запишите следующий код в свой файл Gradle:-
compile 'com.squareup.retrofit2:retrofit:2.1.0'
Попробуйте следующий код:
Интерфейс:
public interface TwitterFollowersService {
/**
* This method id used to get the List of TWITTER FOLLOWERS.
*
* @param userId Get UserId after login and pass it here
* @param var Send Current user screen name
* @param var1 Weather to skip status accept TRUE/FALSE
* @param var2 Weather to include Entities accept TRUE/FALSE
* @param var3 Count to get number of response
* @return Call object of type FOLLOWERS.
*/
@GET("/1.1/followers/list.json")
Call<Response> 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);
}
используйте этот код в вашем классе /Activity:
private Callback<TwitterSession> authorizeCallback = new Callback<TwitterSession>() {
@Override
public void success(com.twitter.sdk.android.core.Result<TwitterSession> result) {
TwitterSession session = Twitter.getSessionManager().getActiveSession();
if (isNetworkAvailable(this)) {
if (session != null) {
TwitterApiServices apiclients = new TwitterApiServices(session);
Call<Response> call = apiclients.getCustomService().show(result.data.getUserId(), result.data.getUserName(), true, false, 100);
call.enqueue(new retrofit2.Callback<Response>() {
@Override
public void onResponse(Call<Response> call, retrofit2.Response<Response> response) {
if (response.body().getUsers().size() > 0) {
ArrayList<TwitterFollowersList> twitterFollowersList = new ArrayList<>();
for (int i = 0; i < response.body().getUsers().size(); i++) {
TwitterFollowersList twitterFollowers = new TwitterFollowersList();
twitterFollowers.setId(response.body().getUsers().get(i).getId());
twitterFollowers.setName(response.body().getUsers().get(i).getName());
twitterFollowers.setProfile_image_url(response.body().getUsers().get(i).getProfile_image_url());
Log.d("TwitterFollowers", "ID: " + response.body().getUsers().get(i).getId() + " Name: " + response.body().getUsers().get(i).getName() + " ProfileImageURL: " + response.body().getUsers().get(i).getProfile_image_url());
twitterFollowersList.add(twitterFollowers);
}
//Upload twitter folowers to server.
uploadUserTwitterContacts(twitterFollowersList);
}
}
@Override
public void onFailure(Call<Response> call, Throwable t) {
showToast(this, "Unable to get response. Try Again!!");
}
});
} else {
showToast(this, getResources().getString(R.string.server_error));
}
} else {
showToast(this, getResources().getString(R.string.no_internet));
}
}
@Override
public void failure(TwitterException e) {
showToast(this, getResources().getString(R.string.server_error));
}
};
Используйте эти следующие классовые модели в качестве ответа и установите их установщик:
1)
public class Response {
@SerializedName("users")
private List<Users> users;
private String next_cursor;
private String previous_cursor_str;
private String previous_cursor;
private String next_cursor_str;
}
2)
public class Users {
private String location;
private String default_profile;
private String profile_background_tile;
private String statuses_count;
private String live_following;
private String lang;
private String profile_link_color;
private String profile_banner_url;
private String id;
private String following;
private String muting;
//private String protected;
private String favourites_count;
private String profile_text_color;
private String description;
private String verified;
private String contributors_enabled;
private String profile_sidebar_border_color;
private String name;
private String profile_background_color;
private String created_at;
private String is_translation_enabled;
private String default_profile_image;
private String followers_count;
private String has_extended_profile;
private String profile_image_url_https;
private String geo_enabled;
//private Status status;
private String profile_background_image_url;
private String profile_background_image_url_https;
private String follow_request_sent;
//private Entities entities;
private String url;
private String utc_offset;
private String time_zone;
private String blocking;
private String notifications;
private String profile_use_background_image;
private String friends_count;
private String blocked_by;
private String profile_sidebar_fill_color;
private String screen_name;
private String id_str;
private String profile_image_url;
private String listed_count;
private String is_translator;
}
Надеюсь, это поможет вам.:)