django - python social auth和django,使用Facebook api 2.4的电子邮件为空

标签 django facebook-graph-api python-social-auth

我在我的 django 项目中使用 python social auth 来提供 Facebook 登录功能。我可以在弹出窗口中看到从 facebook 提供的电子邮件。但它在我的部分管道中是空的。除了 api 版本(以前是 2.3,现在是 2.4)之外,相同的代码与我的其他 Facebook 应用程序使用完全相同的设置运行良好。也没有将 Facebook api 版本更改为 2.3 的选项。
我的 python-social-auth 版本是 0.2.12
以下是我的设置文件中的相关数据

SOCIAL_AUTH_FACEBOOK_SCOPE = ['email',]
FACEBOOK_EXTENDED_PERMISSIONS = ['email',]
SOCIAL_AUTH_USERNAME_IS_FULL_EMAIL = True
SOCIAL_AUTH_PROTECTED_USER_FIELDS = ['email',]
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/'
SOCIAL_AUTH_LOGIN_ERROR_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',
    'home.pipeline.require_email',
    'social.pipeline.social_auth.associate_by_email',  # <--- enable this one
    'social.pipeline.user.create_user',
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details',
    'home.pipeline.send_welcome_mail',
)

SOCIAL_AUTH_FACEBOOK_KEY = os.environ['SOCIAL_AUTH_FACEBOOK_KEY']
SOCIAL_AUTH_FACEBOOK_SECRET = os.environ['SOCIAL_AUTH_FACEBOOK_SECRET']

这是我的自定义部分管道功能
@partial
def require_email(strategy, backend, uid, details, user=None, *args, **kwargs):
    print details
    #some stuff......

此函数打印空电子邮件 id,如下所示
{'username': u'Anurag Jain', 'fullname': u'Anurag Jain', 'last_name': u'Jain', 'email': '', 'first_name': u'Anurag'}

任何人都可以帮我找出这个问题。

最佳答案

事实证明,在 Facebook api v2.4 中进行了一些更改,导调用子邮件为空。已经存在一个问题
https://github.com/omab/python-social-auth/issues/675

解决办法是在django config文件中加入如下设置

SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
    'fields': 'id,name,email', # needed starting from protocol v2.4
}

关于django - python social auth和django,使用Facebook api 2.4的电子邮件为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31671735/

相关文章:

python - sqlite 中的 Django hstore 字段

ios - Facebook 个人资料图片不显示 Swift

facebook - 如何在 Facebook 页面上发帖?

django - 将 AtlassianOAuth2 与 Django 一起使用时,在回调 URI 时获取 "AuthStateMissing ... Session value state missing."

javascript - 将值从 django 服务器发送到客户端?

python - 在 Django 1.3 media_url 与 static_url 中显示样式

python - django-axes 登录的 IP 地址不显示

facebook - 有人可以结束 "LEAVE APP"的痛苦吗!

python-social-auth 无法使用 GoogleOAuth2

python 社交身份验证未注册域