【问题标题】:python social auth and django, email empty with Facebook api 2.4python social auth 和 django,使用 Facebook api 2.4 为空的电子邮件
【发布时间】:2015-10-18 17:44:16
【问题描述】:

我在我的 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......

这个函数打印空的email id,如下所示

{'username': u'Anurag Jain', 'fullname': u'Anurag Jain', 'last_name': u'Jain', 'email': '', 'first_name': u'Anurag'}

谁能帮我解决这个问题。

【问题讨论】:

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


    【解决方案1】:

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

    解决方法是在 django 配置文件中添加如下设置

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

    【讨论】:

    • 老兄感谢您花费数小时寻找解决方案!
    猜你喜欢
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2013-09-02
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多