【问题标题】:Python-social-auth get user cityPython-social-auth 获取用户城市
【发布时间】:2015-01-22 20:11:51
【问题描述】:

我正在尝试使用 django 和 python-social-auth 获取(并保存)用户所在的城市或位置。它将在用户第一次登录时加载,所以我创建了一个 PIPELINE

  """
SOCIAL AUTH
"""
SOCIAL_AUTH_PIPELINE = (
    ...
    'libs.util.associate_by_email',
    'libs.util.load_data_new_user',
     ...
)
SOCIAL_AUTH_FACEBOOK_KEY = "...."
SOCIAL_AUTH_FACEBOOK_SECRET = "...."
SOCIAL_AUTH_FACEBOOK_SCOPE = [
    'email',
]

管道看起来像这样:

def load_data_new_user(backend, response, user, *args, **kwargs):
print kwargs['details']
if user is None:
    if backend.name == "facebook":
        try:
            url = "http://graph.facebook.com/%s/picture?width=200&height=200&redirect=false" % response['id']
            data = json.loads(urllib2.urlopen(url).read())['data']
            print data
            return {'avatar': data}
        except StandardError:
            return {'avatar': None}
    else:
        raise ValueError()

正在获取头像,但是如何捕捉用户城市?

【问题讨论】:

    标签: django python-social-auth


    【解决方案1】:
    1. user_location 范围添加到SOCIAL_AUTH_FACEBOOK_SCOPE 设置
    2. 通过在管道中执行response['location'] 获取位置(未在其个人资料中填写其位置的用户将没有该密钥,因此请先检查它)

    【讨论】:

    • user_location 正是我想要的。非常感谢,很荣幸收到您的来信。恭喜这份出色的工作。
    • 如何为“事件”做同样的事情?我想获取 user_events,所以我使用 SOCIAL_AUTH_FACEBOOK_SCOPE = [ 'email', 'user_location', 'user_events' ] 它适用于 Facebook,但无法接收响应 [] 上的事件。
    • 您需要为此调用相应的 API,范围仅授予您访问该特定端点的权限,请查看 developers.facebook.com/docs/graph-api/reference/v2.2/user/… 的文档。
    猜你喜欢
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    相关资源
    最近更新 更多