2016-11-05 2 views
3

J'utilise python-social-auth pour me connecter à ma propre application web à partir de LinkedIn. J'ai réussi à me connecter et rediriger vers ma page d'accueil. L'étape suivante consiste à utiliser les données supplémentaires (c'est-à-dire UserSocialAuth.extra_data). Quelqu'un pourrait-il donner un exemple sur la façon d'accéder aux données supplémentaires dans les modèles Django ou les vues Django?Utiliser extra_data de python-social-auth dans le template Django

Voici les paramètres que j'avais.

SOCIAL_AUTH_LOGIN_URL = '' 

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

SOCIAL_AUTH_LINKEDIN_OAUTH2_SCOPE = ['r_basicprofile', 'r_emailaddress', 'rw_company_admin', 'w_share'] 
SOCIAL_AUTH_LINKEDIN_OAUTH2_FIELD_SELECTORS = ['first-name', 'last-name', 'email-address', 'headline'] 

SOCIAL_AUTH_LINKEDIN_OAUTH2_EXTRA_DATA = [('id', 'id'), 
             ('first-name', 'first_name'), 
             ('last-name', 'last_name'), 
             ('email-address', 'email_address'), 
             ('headline', 'headline'), 
             ('industry', 'industry')] 

Ce que je vais faire est comme:

<html><body>Here we go! {{ user.first_name }} {{ user.last_name }} 
{{ user.email }} 
{{ user.extra_data.headline }}</body></html> 

Tous les commentaires seront très appréciés!

Répondre

0

Vous pouvez accéder aux données à votre avis Django comme ceci:

if request.user.is_authenticated: 
    linkedin_user = request.user.social_auth.get(provider ='linkedin-oauth2') 
    extra_data = linkedin_user.extra_data 

Et vous pouvez ensuite injecter les données dans votre modèle à afficher