Come posso recuperare l'immagine del profilo e la data di nascita da Google e Facebook utilizzando python-social-auth estendendo la pipeline? Ho letto che posso creare funzioni per farlo e impostarne il percorso ma non conosco i nomi degli attributi che devo recuperare. Per favore aiuto!Recupero dell'immagine del profilo da google e facebook in python-social-auth
risposta
Ecco quello che ho usato per salvare le immagini per Facebook:
def save_profile_picture(backend, user, response, details,
is_new=False,*args,**kwargs):
if backend.__class__.__name__ == 'FacebookOAuth2':
up = UserProperties.objects.get_or_create(user=user) #RETURNS TUPLE (instance, created(boolean))
if not up[0].photo:
url = 'http://graph.facebook.com/{0}/picture'.format(response['id'])
response = urllib.request.urlopen(url)
io = BytesIO(response.read())
up[0].photo.save('profile_pic_{}.jpg'.format(user.pk), File(io))
up[0].save()
Salva questa funzione in un file, per esempio, pipelines.py, e quindi aggiungere la funzione al vostro SOCIAL_AUTH_PIPELINE nelle impostazioni.
SOCIAL_AUTH_PIPELINE = (
'social.pipeline.social_auth.social_details',
'social.pipeline.social_auth.social_uid',
'social.pipeline.social_auth.auth_allowed',
'social.pipeline.social_auth.social_user',
'social.pipeline.user.get_username',
'social.pipeline.social_auth.associate_by_email',
'social.pipeline.user.create_user',
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'social.pipeline.user.user_details',
'projects.pipeline.save_profile_picture', #save facebook profile image,
)
Per Facebook è necessario creare la propria app di Facebook. Puoi solo recuperare informazioni e immagini dagli utenti che ti hanno dato il permesso di farlo. Le stesse regole si applicano più o meno a Google. Leggi i loro documenti API per maggiori dettagli.
Per ottenere avatar dal login sociale, è necessario creare un file pipeline.py nella vostra applicazione e aggiungere queste righe a settings.py:
SOCIAL_AUTH_PIPELINE = (
'social.pipeline.social_auth.social_details',
'social.pipeline.social_auth.social_uid',
'social.pipeline.social_auth.auth_allowed',
'social.pipeline.social_auth.social_user',
'social.pipeline.user.get_username',
'social.pipeline.user.create_user',
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'social.pipeline.user.user_details',
'apps.users.pipeline.get_avatar', # This is a path of your pipeline.py
#and get_avatar is the function.
)
e poi aggiungere questo contenuto al file pipeline.py
def get_avatar(backend, strategy, details, response,
user=None, *args, **kwargs):
url = None
if backend.name == 'facebook':
url = "http://graph.facebook.com/%s/picture?type=large"%response['id']
if backend.name == 'twitter':
url = response.get('profile_image_url', '').replace('_normal','')
if backend.name == 'google-oauth2':
url = response['image'].get('url')
ext = url.split('.')[-1]
if url:
user.avatar = url
user.save()
È solo per fb, twitter e google + –
- 1. Recupero dell'immagine del profilo dall'API di Google+
- 2. Accesso Google iOS recupero dell'immagine del profilo utente impossibile? (NON l'accesso Google Plus)
- 3. api per ottenere uid da URL del profilo su facebook
- 4. Come ottenere l'immagine del profilo di Facebook in Android
- 5. ottiene profilo utente profilo immagine grande da facebook con omniauth in devise 2.0
- 6. Recupero del valore da EditText in DialogFragment
- 7. Problema di tweetsharp durante il recupero del profilo utente e del timeLine
- 8. Come posso ottenere l'immagine del profilo di Facebook via email?
- 9. Facebook API: Ottieni tutte le immagini del profilo
- 10. Recupero dei dettagli utente da Facebook su iOS
- 11. API grafico Facebook: ID dell'immagine del profilo utente
- 12. Come ottenere l'immagine del profilo di Facebook dell'utente in facebook SDK 3.0 Android
- 13. Facebook API per iOS, Evasione amici le immagini del profilo
- 14. spostare, ridimensionare e ritagliare l'immagine in Android come immagine del profilo facebook
- 15. iOS Facebook Graph API Profilo Foto Link
- 16. Festa del papà in arrivo! - Posso ottenere il profilo del padre di un utente di Facebook?
- 17. recuperare l'immagine del profilo utente da Twitter
- 18. Passo MAVEN parametro del profilo da Jenkins
- 19. ottenere immagine del profilo da Windows Live
- 20. espressione regolare per ottenere profilo facebook
- 21. Analisi utente basata sul loro profilo Facebook?
- 22. Impossibile accedere al profilo dell'utente da Google Plus
- 23. OmniAuth per estrarre i dati del profilo completo da LinkedIn
- 24. Recupero dei miei dati tramite l'API FaceBook
- 25. Facebook, Django, e Google App Engine
- 26. Come ottenere l'immagine del profilo del canale YouTube con channelId
- 27. Apri Facebook Post in Facebook App Da iPhone App
- 28. Profilo Maven - Attivazione del profilo in base alla confezione
- 29. Recupero dati da plist
- 30. Integrazione di Google e Facebook login in iOS - AppDelegate openURL
Quindi quello che ho capito è che devo trovare un URL sul quale Google+ serve le sue immagini e usarlo per recuperare l'immagine del profilo e poi scavalcare la mia pipeline. Ho capito bene? –
Sì. Leggi i loro documenti per maggiori dettagli. Devi aggiungere le tue funzioni alla pipeline, nel posto giusto per avere il comportamento desiderato. E a chi ha votato: ho dato una buona risposta su come iniziare. Non puoi aspettarti che le persone scrivano l'intero programma per altre persone, ma fornisci risposte che portano l'OP sulla strada giusta, come è avvenuto qui. Questo tipo di negatività è sfortunatamente dilagante qui. – Jaakko
Ho un altro dubbio, ho un modello personalizzato che eredita il modello utente da Django.contrib.author e quindi altri due campi per DOB e immagine del profilo. Quando ho eseguito l'accesso con Google utilizzando OAuth2, il django.contrib.auth.user nel pannello di amministrazione ha ottenuto i suoi valori ma il mio modello personalizzato non è stato collegato su base uno a uno con esso. Qualche consiglio su come potrei essere in grado di farlo? –