2015-02-13 7 views
6

Weiß jemand, ob es eine Möglichkeit gibt, ein angemeldetes Benutzerprofilbild über die App zu platzieren, um es vielleicht auf der ActionBar zu platzieren, während sie sich bewegen?Android - Fabric.io Twitter REST API Profil image/picture

Hinweise, Tipps, Beispiele, Downloads alle gern gesehen :)

Wenn Sie mir helfen können, bitte gehe ich davon sehr wenig Wissen über etwas außerhalb grundlegenden Java!

Nochmals vielen Dank Leute x

Antwort

9

Sie können mithilfe /1.1/users/show.json ein Benutzerprofilbild erhalten. Sie können sich auf REST API URLs für Twitter-Daten beziehen.

Durch Erweitern TwitterApiClient können wir Twitter-Daten von der URL abrufen.

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

Als nächstes erhalten die UsersService und seine Show-Methode aufrufen, in den definierten Abfrageparameter übergeben. Ich habe die Abfrageparameter basierend auf den dokumentierten definiert.

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

Courtesy: https://twittercommunity.com/t/android-get-user-profile-image/30579/2

+0

Ich musste die Schnittstelle innerhalb von 'MyTwitterApiClient' definieren und es öffentlich machen, damit es funktioniert – surfer190

+0

Thnx dude.Ich surfte dafür! :) –

+0

Was sollte der Benutzer im neuen Rückruf sein ()? Sollte es twitter4j.User oder etwas anderes sein? – NarendraJi

5

Dies ist, wie ich meine an der Arbeit:

  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) { 

       } 
      }); 

ich Platz habe dieses Stück Code in meiner LoginButton Callback-Methode:

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

Ich tat genau das gleiche, aber ich habe immer noch das Problem Callback null. Irgendeine Idee, was kann das Problem sein? Ich habe auch button.onActivityResult (requestCode, resultCode, data) hinzugefügt; – Abhilash

+0

Ich denke, vielleicht überprüfen Sie, ob Sie auf Twitter angemeldet waren, bevor Sie irgendwelche Twitter-Funktionalität wie das Holen des Profilbilds usw. implementieren. Das ist der übliche Grund, warum es null zurückgibt. Ich hatte damit zu kämpfen, als ich anfing, ich würde abmelden und dann immer noch versuchen, Profil pic etc holen und es würde null zurückgeben, da ich nicht die Berechtigung dazu hätte. – Simon

+0

OK Simon. Werde das überprüfen. Danke :) – Abhilash

1

Ich habe es mit einem benutzerdefinierten Button gemacht und das ist der Code, der von seinem onClick Listener ausgeführt wird:

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

sollte ich den Benutzer auffordern, den Zugriff auf Ihre App zu autorisieren und melden Sie ihn, wenn er annimmt.