在Python Social Auth中获取Facebook用户的喜好

时间:2014-01-07 16:11:00

标签: python django facebook python-social-auth

我正在与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']

任何使这项工作的方法?

1 个答案:

答案 0 :(得分:4)

将设置SOCIAL_AUTH_SCOPE重命名为SOCIAL_AUTH_FACEBOOK_SCOPE。在auth过程中不会自动发送喜欢,您需要将它们查询到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