21

Voglio ottenere il profilo utente foto grande o normale da facebook. Ora ottengo la versione quadrata dall'immagine del profilo utente con questo codice:ottiene profilo utente profilo immagine grande da facebook con omniauth in devise 2.0

:image => access_token.info.image 
# http://graph.facebook.com/id/picture?type=square 

Come posso ottenere le versioni grandi o normali?

Or e l'applicazione, Come posso sostituire in questo URL l'ultima parola, grande invece piazza ...

La ringrazio molto!

risposta

26

Di seguito sono riportate le 4 diverse dimensioni delle immagini del profilo consentite da Facebook.

http://graph.facebook.com/id/picture?type=small 
http://graph.facebook.com/id/picture?type=square 
http://graph.facebook.com/id/picture?type=large 
http://graph.facebook.com/id/picture?type=normal 
+0

Grazie, ma so che questo 4 diverse dimensioni di immagini del profilo. La mia domanda è che ricevo la versione quadrata dai dati di facebook, e voglio usare nella mia app rails anche altre 3 versioni. Grazie! – hyperrjas

+1

sì usa questo http://graph.facebook.com/id/picture?type=square per l'immagine grande – vishnu

+0

questo ti dice le dimensioni, ma in realtà non risolve il problema –

31

Se si vuole prendere un quadro diverso formato al momento del login, la strategia omniauth-facebook ha un'opzione per modificare l'immagine viene richiesto.

image_size: imposta la dimensione per l'URL dell'immagine restituita nell'hash auth.

Ad esempio, il grande quadro sarebbe da richiedere nella omniauth.rb questo modo:

provider :facebook, 'secrets', 'sekrets', :image_size => 'large' 

https://github.com/mkdynamic/omniauth-facebook#configuring

+2

Grazie, ho controllato questa correzione per me nel mio file devise.rb ma non funziona bene per me :(. Ho ricevuto la versione quadrata. Sto usando devise 2.0 con omniauth-facebook (1.2.0) gem! – hyperrjas

+1

Questa è la risposta corretta a questa domanda! Popolo in aumento! :) –

+0

La migliore risposta di tutti! –

4

Quando si salva in DB si poteva fare in questo modo access_token.info.image.split("=")[0] << "=large"

e cambia semplicemente grande a qualsiasi dimensione tu voglia.

Oppure potresti avere un metodo di supporto per la visualizzazione di diverse dimensioni nelle visualizzazioni.

def profile_photo(type="large") 
    puts @user.image.split("=")[0] << "=#{type}" 
end 

profile_photo("small") #=> http://url?type=small 

profile_photo("square") #=> http://url?type=square 

profile_photo #=> http://url?type=large 

profile_photo("normal") #=> http://url?type=normal 
2

Invece di cambiare il file di configurazione ho solo aggiunto + "?type=large" all'URL.

<%= image_tag current_user.image + "?type=large" %>

in modo da poter richiedere diverse dimensioni di esso in qualsiasi momento.

<%= image_tag current_user.image + "?type=normal" %>

<%= image_tag current_user.image + "?type=small" %>

Problemi correlati