【问题标题】:How to retrieve Facebook friend's information with Python-Social-auth and Django如何使用 Python-Social-auth 和 Django 检索 Facebook 朋友的信息
【发布时间】:2014-04-28 04:45:45
【问题描述】:

如何使用 Python-Social-auth 和 Django 检索 Facebook 朋友的信息?我已经检索了个人资料信息并对用户进行身份验证,但我想获取有关他们朋友的更多信息并邀请他们加入我的应用程序。 谢谢!

【问题讨论】:

  • 检查stackoverflow.com/a/20998857/385822,该答案涉及用户喜欢,但一旦您找到返回所需数据的Facebook API,同样可以应用于朋友。
  • 谢谢@omab!我会试试看!!! :)

标签: python django facebook facebook-graph-api python-social-auth


【解决方案1】:

您可以使用 Facebook API 来完成。首先,您需要获取您的 Facebook 应用程序的令牌 (FACEBOOK_APP_ACCESS_TOKEN) https://developers.facebook.com/tools/accesstoken/ 或来自social_user.extra_data['access_token']

然后使用这个令牌你可以发送你需要的请求,例如,这段代码获取认证用户的所有朋友,包括他们的 id、姓名、位置、图片:

social_user = request.user.social_auth.filter(
    provider='facebook',
).first()
if social_user:
    url = u'https://graph.facebook.com/{0}/' \
          u'friends?fields=id,name,location,picture' \
          u'&access_token={1}'.format(
              social_user.uid,
              social_user.extra_data['access_token'],
          )
    request = urllib2.Request(url)
    friends = json.loads(urllib2.urlopen(request).read()).get('data')
    for friend in friends:
        # do something

根据您想要获取的字段,您可以在此处设置权限: https://developers.facebook.com/apps/ -> 你的应用 -> 应用详情 -> 应用中心权限

或在settings.py中设置您的权限:

SOCIAL_AUTH_FACEBOOK_SCOPE = [
    'email',
    'user_friends',
    'friends_location',
]

【讨论】:

  • 谢谢@vero4ka。你真的帮我! :D
  • 我必须为 Gmail 用户获取电子邮件和 access_token social_user = request.user.social_auth.filter(provider='google-oauth2', ) 是否可行?
  • 您没有像从安全服务器(Oauth2 术语中的客户端)调用时那样使用 app_secretproof
【解决方案2】:

上面的回复只是一些额外的内容。要从 extra_data 获取令牌,您需要使用该数据导入模型(我花了一段时间才找到这个): 从 social.apps.django_app.default.models 导入 UserSocialAuth

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多