2015-02-13 18 views
6

Czy ktoś wie, czy istnieje sposób, aby pobrać zdjęcie profilowe zalogowanego użytkownika, które ma być umieszczone w aplikacji, aby umieścić go na pasku akcji podczas nawigacji?Android - Fabric.io Twitter Obraz profilowy REST API/zdjęcie

wskazówki, porady, przykłady, pliki do pobrania wszystkich serdecznie :)

Jeśli możesz mi pomóc, proszę Zakładam, że bardzo mało wiedzy na temat czegokolwiek poza podstawową Java!

Znowu ludzie dzięki x

Odpowiedz

9

można uzyskać obraz profilu użytkownika za pomocą /1.1/users/show.json. Możesz zapoznać się z danymi na Twitterze na stronie REST API URLs.

Poszerzając TwitterApiClient możemy pobrać dane z Twittera z adresu URL.

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

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

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); 
} 

Następnie uzyskać UsersService i wywołać jego metody wykazują, przechodząc w zdefiniowanych parametrów zapytania. Zdefiniowałem parametry zapytania na podstawie tych, które są udokumentowane.

new MyTwitterApiClient(session).getUsersService().show(12L, null, true, 
new Callback<User>() { 
    @Override 
    public void success(Result<User> result) { 
     Log.d("twittercommunity", "user's profile url is " 
       + result.data.profileImageUrlHttps); 
    } 

    @Override 
    public void failure(TwitterException exception) { 
     Log.d("twittercommunity", "exception is " + exception); 
    } 
}); 

Dzięki uprzejmości https://twittercommunity.com/t/android-get-user-profile-image/30579/2

+0

Musiałem zdefiniować interfejs wewnątrz 'MyTwitterApiClient' i uczynić go' public' do pracy – surfer190

+0

Thnx dude. Żeglowałem po to.! :) –

+0

Co powinno być użytkownikiem w nowym wywołaniu zwrotnym ()? Czy powinien to być twitter4j.User lub coś innego? – NarendraJi

5

To jak mam kopalni do pracy:

  TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient(); 
      twitterApiClient.getAccountService().verifyCredentials(false,false, new Callback<User>() { 
       @Override 
       public void success(Result<User> userResult) { 
        String name = userResult.data.name; 
        String profilebannerurl = userResult.data.profileBannerUrl; 
        String profileurl = userResult.data.profileImageUrl; 

       } 

       @Override 
       public void failure(TwitterException e) { 

       } 
      }); 

mam Umieść ten kawałek kodu w moim LoginButton metody wywołania zwrotnego:

loginButton.setCallback(new Callback<TwitterSession>() { 
     @Override 
     public void success(Result<TwitterSession> result) { <insert here> } 
+0

Zrobiłem dokładnie to samo, jednak nadal napotykam problem z pustym hasłem zwrotnym. Każdy pomysł, jaki może być problem? Dodałem również button.onActivityResult (requestCode, resultCode, data); – Abhilash

+0

Myślę, że może sprawdzić, czy zalogowałeś się na twitterze, zanim zaimplementujesz jakąkolwiek funkcjonalność Twittera, np. Ściągając zdjęcie profilowe itp. Jest to normalne, dlaczego zwraca wartość null. Miałem z tym problemy, ponieważ gdy zaczynałem, wylogowałem się, a następnie nadal próbowałem pobrać zdjęcie profilowe itp., A ono zwróciło wartość null, ponieważ nie miałbym do tego uprawnień. – Simon

+0

OK Simon. Sprawdzę to. Dzięki :) – Abhilash

1

Zrobiłem to za pomocą niestandardowego przycisku i jest to kod, który jest wykonywany przez jego program nasłuchujący onClick:

TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_API_KEY, TWITTER_API_SECRET); 
Fabric.with(activity, new Twitter(authConfig)); 

TwitterCore.getInstance().getApiClient().getAccountService().verifyCredentials(false, false, new com.twitter.sdk.android.core.Callback<User>() { 
    @Override 
    public void success(Result<User> result) { 
     Log.d(TAG, "Twitter log in success"); 

     String userName = result.data.screenName; 
     int userId = result.data.id; 
     String pictureUrl = result.data.profileImageUrl; 
     String coverUrl = result.data.profileBannerUrl; 
    } 

    @Override 
    public void failure(TwitterException e) { 
     Log.d(TAG, "Twitter log in error : " + e.getMessage()); 
    } 
}); 

Należy poprosić użytkownika o autoryzowanie dostępu do aplikacji i zalogowanie go, jeśli akceptuje.