Twitter 不会公开电子邮件,要检索 Facebook 电子邮件,您需要定义FACEBOOK_EXTENDED_PERMISSIONS = ['email']
,LinkedIn 电子邮件会自动检索。电子邮件存储在用户模型下email
属性。
可以通过定义以下设置来存储个人资料图片:
TWITTER_EXTRA_DATA = [('profile_image_url', 'profile_picture')]
LINKEDIN_EXTRA_DATA = [('picture-url', 'profile_picture')]
Facebook 个人资料图片可通过 API 访问,并且不会在身份验证过程中发送。您可以定义管道来存储它,如下所示:
from django.utils import simplejson
from social_auth.utils import dsa_urlopen
def facebook_profile_picture(backend, user, social_user, details, response, *args, **kwargs):
if backend.name != 'facebook':
return
url = 'https://graph.facebook.com/{0}/picture?redirect=false&access_token={1}'
response = dsa_urlopen(url.format(social_user.extra_data['id'], social_user.extra_data['access_token'])
data = simplejson.load(response)
social_user.extra_data['profile_picture'] = data['data']['url']
social_user.save()
将其添加到管道设置的底部(检查管道文档:http://django-social-auth.readthedocs.org/en/latest/pipeline.html http://django-social-auth.readthedocs.org/en/latest/pipeline.html)。该代码尚未经过测试,因此请稍微使用一下。
然后你可以访问个人资料图片:
social = user.social_auth.get(provider='facebook') # or twitter or linkedin
social.extra_data['profile_picture']