【问题标题】:Get Facebook user likes in Python Social Auth在 Python Social Auth 中获取 Facebook 用户点赞
【发布时间】:2014-01-25 10:03:26
【问题描述】:

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

有什么办法可以做到这一点?

【问题讨论】:

    标签: python django facebook python-social-auth


    【解决方案1】:

    将设置 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
    

    【讨论】:

    • 这种方法是否考虑到 Facebook Graph API 响应的分页?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多