21

Chcę uzyskać profil użytkownika duży lub normalny obraz z Facebooka. Teraz otrzymuję kwadratową wersję ze zdjęcia profilu użytkownika z następującym kodem:Uzyskaj profil użytkownika duże zdjęcie z Facebooka z omniauth w opracowaniu 2.0

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

Jak mogę uzyskać duże lub normalne wersje?

Albo i aplikacja, Jak mogę wymienić w tym url ostatnie słowo, duży kwadrat zamiast ...

Dziękuję bardzo!

Odpowiedz

26

Poniżej znajdują się 4 różne rozmiary zdjęć profilowych, które są dozwolone przez 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

Dziękuję, ale wiem, że to 4 różnej wielkości zdjęć profilowych. Moje pytanie brzmi, że otrzymuję kwadratową wersję z danych facebooka i chcę używać w mojej aplikacji rails także innych 3 wersjach. Dziękuję Ci! – hyperrjas

+1

tak, użyj tego http://graph.facebook.com/id/picture?type=square dla dużego obrazu – vishnu

+0

to mówi ci rozmiary, ale tak naprawdę nie rozwiąże problemu –

31

Jeśli chcesz pobrać obraz o innym rozmiarze podczas logowania, strategia omniauth-facebook ma opcję zmiany, który obraz jest wymagany.

image_size: Ustaw rozmiar adresu URL zwróconego obrazu w mieszaniu auth.

Na przykład, duży obraz zostanie złożony wniosek w omniauth.rb ten sposób:

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

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

+2

Dziękuję Sprawdziłem poprawkę dla mnie w moim pliku devise.rb ale to nie działa dobrze dla mnie :(Otrzymałem kwadratową wersję. Używam devise 2.0 z omniauth-facebook (1.2.0) gem! – hyperrjas

+1

To jest odpowiednia odpowiedź na to pytanie! Przeżyj ludzi! :) –

+0

Najlepsza odpowiedź! –

4

Po zapisaniu go w DB można zrobić to tak access_token.info.image.split("=")[0] << "=large"

i po prostu zmień rozmiar na dowolny rozmiar.

Lub możesz mieć metodę pomocnika do wyświetlania różnych rozmiarów w swoich widokach.

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

Zamiast zmieniać plik konfiguracyjny, do adresu URL dodano tylko + "?type=large".

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

więc można wystąpić różne rozmiary niej w dowolnym czasie.

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

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

Powiązane problemy