django social auth registration facebook email

时间:2015-07-21 14:54:33

标签: django facebook django-socialauth

您好我想允许用户通过Facebook登录/注册。 身份验证有效但后端使用名字(来自Facebook)的组合作为用户名而不是电子邮件创建用户实例。 谷歌oauth2后端工作正常。

以下是我的设置:

  FACEBOOK_APP_ID                   = 'appid'
  FACEBOOK_API_SECRET               = 'apisecret'
  FACEBOOK_EXTENDED_PERMISSIONS = ['email']

  SOCIAL_AUTH_CREATE_USERS          = True
  SOCIAL_AUTH_FORCE_RANDOM_USERNAME = False
  SOCIAL_AUTH_DEFAULT_USERNAME      = 'socialauth_user'
  SOCIAL_AUTH_COMPLETE_URL_NAME     = 'socialauth_complete'
  SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'socialauth_associate_complete'
  LOGIN_ERROR_URL                   = '/login/error/'
  LOGIN_REDIRECT_URL                = '/'
  SOCIAL_AUTH_USER_MODEL            = 'users.User'
  SESSION_SERIALIZER =   django.contrib.sessions.serializers.PickleSerializer'

我的应用应该创建用户,其中包含来自Facebook的数据(电子邮件)。 我无法克服这一点。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

python-social-auth(取代django-social-auth)中,您必须将这两个设置为从FB获取电子邮件:

SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
  'locale': 'pl_PL',
  'fields': 'id, name, email',
}

SOCIAL_AUTH_FACEBOOK_SCOPE相当于FACEBOOK_EXTENDED_PERMISSIONS,我猜SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS相当于FACEBOOK_PROFILE_EXTRA_PARAMS。所以我会尝试:

FACEBOOK_EXTENDED_PERMISSIONS = ['email']
FACEBOOK_PROFILE_EXTRA_PARAMS = {
  'locale': 'pl_PL',
  'fields': 'id, name, email',
}
相关问题