如何从 python-social-auth 获取用户的生日

How to get user's birthday from python-social-auth

所以我已经设置了我的 Django 应用程序,我想从 Facebook 获取生日并将其保存在管道中的某个位置。我确实请求范围:

SOCIAL_AUTH_FACEBOOK_SCOPE = ['email','user_birthday']

类似问题的大多数答案都使用 Facebook 返回的 response 字典。但是,当我打印它时,我有这个:

{
'id': .., 
'expires': .., 
'name': .., 
'granted_scopes': ['user_birthday', 'email', 'public_profile'], 
'access_token': ..
}

如何获取实际生日?

现在您已经有了访问令牌,您可以使用它来发送获取请求:

url = 'https://graph.facebook.com/%d?fields=birthday' % user_id
parameters = {'access_token': TOKEN}
r = requests.get(url, params = parameters)
result = json.loads(r.text)

显然您使用 access_token 与 FB Graph API 进行通信。其中一种方法是手动发送请求,例如 says. However, the way I ended up doing it was with facepy 库,这样看起来更容易:

from facepy import GraphAPI

def work_with_response(response, *args, **kwargs):
    graph = GraphAPI(response['access_token'])
    fb_data = graph.get('me?fields=birthday')
    date = fb_data['birthday']