使用django,我通过Google验证用户身份。我得到了最初的请求令牌&将用户重定向到Google进行身份验证。之后谷歌将用户重定向回我的网站(使用我提供的redirect_url)。
此时request.user.id
为None
所以request.user.username
为什么会发生这种情况?我需要用户ID输入access_tokens(谷歌发送给我)到数据库中。
在什么条件下,Django中的request.user
对象是空的?
UPDATE1:当我使用url模式从Google重定向回来时,http://mywebsite.com/lserv?s=goog
控件返回到我的django视图功能,但django为我提供了request.user
个对象用户作为没有用户名或ID的匿名用户。为什么呢?
UPDATE2:
所有这一切现在都在python manage.py runserver
上运行......
UPDATE3:任何人都面临与此类似的事情吗?基本上,user
中的request
无法自动清除&我被分配为Anonymous
用户。所有这些都发生在用户(来自浏览器)的url请求之间。为什么?
答案 0 :(得分:1)
如果您正在使用谷歌的oauth api。要获得用户,您必须执行此类操作
from google.appengine.api import oauth
# ...
try:
# Get the db.User that represents the user on whose behalf the
# consumer is making this request.
user = oauth.get_current_user()
except oauth.OAuthRequestError, e:
# The request was not a valid OAuth request.
# ...
答案 1 :(得分:1)
Django的身份验证机制与Google或任何其他身份验证服务无关。如果你想将第三方授权服务与你的Django网站集成,你应该自己动手。
如果你正在使用oauth2(https://github.com/simplegeo/python-oauth2)库,那就是README(https://github.com/simplegeo/python-oauth2/blob/master/README.md )有一个名为“登录Django w / Twitter”的部分可以帮助你。