Python-social-auth 获取用户城市
Python-social-auth get user city
我正在尝试使用 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()
正在获取头像,请问如何获取用户所在城市?
- 将
user_location
范围添加到 SOCIAL_AUTH_FACEBOOK_SCOPE
设置
- 通过在管道中执行
response['location']
获取位置(未在个人资料中填写位置的用户将没有该密钥,因此请先检查)
我正在尝试使用 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()
正在获取头像,请问如何获取用户所在城市?
- 将
user_location
范围添加到SOCIAL_AUTH_FACEBOOK_SCOPE
设置 - 通过在管道中执行
response['location']
获取位置(未在个人资料中填写位置的用户将没有该密钥,因此请先检查)