python - 无法获取 Facebook 电子邮件

标签 python facebook oauth oauth-2.0

我正在关注this tutorial here我使用 python 库 Rauth 和 Flask 编写了以下代码:

def callback(self):
    if 'code' not in request.args:
        return None, None, None
    oauth_session = self.service.get_auth_session(
        data={'code': request.args['code'],
              'grant_type': 'authorization_code',
              'redirect_uri': self.get_callback_url()}
    )
    me = oauth_session.get('me').json()
    print me['id'], me['name'], me.get('email')
    return ('facebook$' + me['id'], me.get('email').split('@')[0],  # Facebook does not provide username, so the email's user is used instead
        me.get('email'))

如您所见,我尝试打印 me['id'], me['name'], me.get('email')。 ID 和姓名按计划打印,但电子邮件打印为 None,导致函数出现问题(因为电子邮件在函数底部使用)。当使用我的个人 Facebook 帐户进行测试时,我确保提供了电子邮件,我检查了应用程序设置,在显示电子邮件的地方,有一个标记的复选框,表明我正在与此应用程序共享电子邮件。

Facebook 是否更改了处理或接收电子邮件的方式,或者我的应用或代码是否存在问题?谢谢。

最佳答案

显然,随着 API 2.4 版本的更新,Facebook 从返回的字段列表中删除了电子邮件。

如果您的应用使用 API 2.4 版本,您可能应该从代码中排除电子邮件字段。

供引用: https://developers.facebook.com/ads/blog/post/2015/07/08/marketing-api-v2_4/

斯特凡诺

关于python - 无法获取 Facebook 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32001609/

相关文章:

python - matplotlib 改变箭袋图中的范围

javascript - Firebase身份验证中的用户ID在所有身份验证提供程序(Google,Facebook,Github)中如何相同?

facebook - Azure 移动服务 OAuth REST 客户端

oauth - tincan LRS/LMS 启动和 OAuth 的最佳实践

oauth - QuickBooks API 不再接受我的访问 token : token_rejected

python - 如果我的一个程序在 python 2.4 中运行,但导入了一些需要 python 2.5 的东西怎么办?

python - 如何将给定字符串列表中的每个单词大写?

python - 如何使用 evdev 在 Python 中从 HID 设备获取字符串?

android - 自定义 Google Plus 登录按钮和 Facebook 登录按钮

javascript - 登录后 Facebook api 不会重新加载