繁体   English   中英

Django-Social-Auth Facebook无法保存用户的详细信息

[英]Django-Social-Auth Facebook doesn't save user's details

我正在使用基本的Django-Social-Auth Facebook代码通过Facebook进行注册。 由于某种原因,我无法保存用户的电子邮件(姓氏和名字)。 它将用户名保存为用户的前+后+中,但其他属性保持空白。 我尝试请求电子邮件地址,该应用程序确实说我们获得了电子邮件地址,但是没有保存到表中。

我阅读了有关Facebook注册的所有帖子和博客,但似乎没有任何用处。 我想念什么吗?

在settings.py中,我有:

FACEBOOK_EXTENDED_PERMISSIONS  = ['email']
SESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer'

AUTHENTICATION_BACKENDS = (
    'social_auth.backends.facebook.FacebookBackend',
    'django.contrib.auth.backends.ModelBackend',
)

INSTALLED_APPS = (
...
    'social_auth',
)

我在看auth \\ models.py,也许create_user函数没有收到电子邮件字段。

def create_user(self, username, email=None, password=None, **extra_fields):
    return self._create_user(username, email, password, False, False,
                             **extra_fields)

之前我也遇到过同样的问题,因此您需要在settings.py中创建一个管道来更新facebook用户数据。 此代码将帮助您获取Facebook用户数据; http://django-social-auth.readthedocs.org/en/latest/pipeline.html

def update_user_social_data(request, *args, **kwargs):
    user = kwargs['user']
    if not kwargs['is_new']:
        return
    user = kwargs['user']
    if kwargs['backend'].__class__.__name__ == 'FacebookBackend':
        fbuid = kwargs['response']['id']
        access_token = kwargs['response']['access_token']

        url = 'https://graph.facebook.com/{0}/' \
              '?fields=email,gender,name' \
              '&access_token={1}'.format(fbuid, access_token,)

        photo_url = "http://graph.facebook.com/%s/picture?type=large" \
            % kwargs['response']['id']
        request = urllib2.Request(url)
        response = urllib2.urlopen(request).read()
        email = json.loads(response).get('email')
        name = json.loads(response).get('name')
        gender = json.loads(response).get('gender')

与2017年7月一样,您必须将这些行放入您的settings.py

SOCIAL_AUTH_CREATE_USERS = True
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
  'fields': 'id, name, email, age_range'
}

SOCIAL_AUTH_FACEBOOK_API_VERSION = '2.9' # or whatever version you're using

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM