在Python Social Auth中获得Facebook用户的赞
问题内容:
我正在使用Django启动一个项目,并且试图允许用户使用Facebook登录。出于站点目的,我想在数据库中存储用户喜欢的内容。
我以Python Social Auth(用于该项目的库)上的示例应用程序为例,并编写了用于在DB中存储数据的管道。
当我尝试访问点赞时就会出现问题,因为我得到的响应只是给我基本数据,因此以下代码不起作用。
def user_details(strategy, details, response, user=None, *args, **kwargs):
attrs = {'user': user}
if strategy.backend.__class__.__name__ == 'FacebookOAuth2':
#no response['likes']
for i in response['likes']:
for d in i['data']:
p = UserPreferences(user=user,like=d['name'])
p.save()
我在Facebook上的应用程序请求“喜欢”权限,并且我的settings.py中包含以下内容(包括秘密和所有内容):
SOCIAL_AUTH_SCOPE = ['user_likes']
有什么办法可以使这项工作吗?
问题答案:
将设置重命名SOCIAL_AUTH_SCOPE
为SOCIAL_AUTH_FACEBOOK_SCOPE
。点赞不会在身份验证过程中自动发送,您需要将其查询到Facebook
API,例如:
def get_likes(strategy, details, response, *args, **kwargs):
if strategy.backend.name == 'facebook':
likes = strategy.backend.get_json(
'https://graph.facebook.com/%s/likes' % response['id'],
params={'access_token': response['access_token']}
)
for like in likes['data']:
pass # Process and save likes here