我在google和stackoverflow上查看了有关此主题的其他一些问题,但似乎找不到正确的解决方案。我正在尝试使用foursquare验证用户的应用程序。当用户使用foursquare登录时,我想以用户身份在数据库中创建然后存储他们的一些信息。这一切都很好。同时,我想以经过身份验证的用户身份登录。这是我遇到麻烦的地方。我的看法如下所示:
def foursq_done(request):
# get the access_token
access_token = request.session.get('access_token')
print access_token
# request user details from foursquare
params = {'oauth_token': access_token}
data = urllib.urlencode(params)
url = 'https://api.foursquare.com/v2/users/self'
full_url = url + '?' + data
print full_url
response = urllib2.urlopen(full_url)
response = response.read()
user_data = json.loads(response)['response']['user']
name = user_data['firstName']
try:
user = User.objects.get(username=user_data['contact']['email'])
except User.DoesNotExist:
# Save information on user
user = User.objects.create_user(username=user_data['contact']['email'],
first_name=user_data['firstName'], last_name=user_data['lastName'],
email=user_data['contact']['email'], password=access_token)
profile = Profile()
profile.user = user
profile.oauth_token = access_token
profile.save()
user = authenticate(username=user_data['contact']['email'], password=access_token)
login(request, user)
# show the page with the user's name to show they've logged in
return TemplateResponse(request, 'foursq_auth/foursq_welcome.html', {'name': name}
这与我之前创建Django用户时使用的登录过程相同,
我不希Foursquare用户成为AnonymousUser,但是当我运行authenticate()时显然无法正常工作。我究竟做错了什么?
相关分类