2015-02-13 15 views
6

Qualcuno sa se c'è un modo per inserire un'immagine del profilo degli utenti firmata da inserire nell'app, per posizionarla forse sull'action bar mentre naviga?Android - Fabric.io Twitter REST Profilo API immagine/immagine

consigli, suggerimenti, esempi, download di tutti i benvenuti :)

Se potete aiutarmi, si prega di assumere ho pochissima conoscenza riguardo nulla al di fuori di Java di base!

Ancora una volta, grazie persone x

risposta

9

È possibile ottenere immagini di profilo di un utente utilizzando /1.1/users/show.json. È possibile fare riferimento a REST API URLs per i dati di Twitter.

Estendendo TwitterApiClient possiamo recuperare i dati di Twitter dall'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); 
} 

Avanti, ottenere il UsersService e chiamare il metodo show, passando nei parametri di query definiti. Ho definito i parametri della query in base a quelli che sono documentati.

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

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

+0

Ho dovuto definire l'interfaccia all'interno di "MyTwitterApiClient' e renderlo' public' perché funzioni – surfer190

+0

Thnx tizio. Stavo navigando per questo.! :) –

+0

Quale dovrebbe essere l'utente nella nuova richiamata ()? Dovrebbe essere twitter4j.Utente o qualcos'altro? – NarendraJi

5

È così che ho ottenuto il mio lavorare:

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

       } 
      }); 

ho posto questo pezzo di codice nel mio LoginButton metodo di callback:

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

Ho fatto esattamente la stessa cosa, tuttavia, mi trovo ancora ad affrontare il problema del callback null. Qualche idea su quale possa essere il problema? Ho anche aggiunto button.onActivityResult (requestCode, resultCode, data); – Abhilash

+0

Forse penso di aver effettuato l'accesso a Twitter prima di implementare qualsiasi funzionalità di Twitter come il recupero della foto del profilo ecc. Questo è il solito motivo per cui restituisce null. Avevo lottato con questo come quando ho iniziato, mi disconnetterei e quindi provare ancora a recuperare il profilo pic ecc e restituirebbe null in quanto non avrei l'autorizzazione a farlo. – Simon

+0

OK Simon. Verificherò. Grazie :) – Abhilash

1

L'ho fatto con un pulsante personalizzato e questo è il codice che viene eseguito dal listener 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()); 
    } 
}); 

Dovrei chiedere all'utente di autorizzare l'accesso alla tua app e registrarlo se accetta.