1

使用 django,我通过 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:有人遇到过类似的情况吗?基本上,无缘无故userrequest自动清除并且我被分配为Anonymous用户。所有这些都发生在来自用户(来自浏览器)的 url 请求之间。为什么?

4

2 回答 2

1

如果您使用的是 google 的 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.
            # ...
于 2011-03-31T09:15:17.467 回答
1

Django 的身份验证机制与 Google 或任何其他身份验证服务无关。如果你想将第三方身份验证服务与你的 Django 站点集成,你应该自己做。

如果您使用的是oauth2库,它的README中有一个名为“使用 Twitter 登录 Django”的部分可能会对您有所帮助。

于 2011-04-11T08:08:50.800 回答