0

使用django,我通过Google对用户进行身份验证。我收到初始请求令牌&将用户重定向到谷歌进行身份验证。之后,谷歌将用户重定向回我的网站(使用我提供的redirect_url)。Django request.user为空

此时request.user.idNone所以request.user.username为什么会发生这种情况?我需要用户ID输入access_tokens(谷歌发送给我的)到数据库中。

在什么情况下,Django中的request.user对象是空的?

UPDATE1:,当我从谷歌作为http://mywebsite.com/lserv?s=goog控制又回到我的Django的看法功能,不过在Django给我request.user对象的用户作为一个没有用户名或ID匿名用户重定向的URL模式。为什么?

UPDATE2: 这一切对python manage.py runserver现在正在运行...

UPDATE3:任何人都面临着anythn与此类似?基本上,没有理由request中的user自动清除&我被指定为Anonymous用户。所有这些都发生在来自用户的url请求(来自浏览器)之间。为什么?

+0

是否有通过谷歌认证的应用程序?您需要提供更多信息。从你的问题我没有看到谷歌用户帐户与django用户有什么关系。您需要将Google用户本地存储,并将fk存储到django用户。 – pyeleven 2011-03-31 09:11:55

+0

如果您可以访问属性,那么它不是空的。 – 2011-03-31 09:12:12

+0

@ignacio我可以访问'request.user'但它被分配给匿名用户 - '(PDB)p request.user .__类__() (PDB) p request.user.id 无 (PDB)p request.user.username ' ' – 2011-03-31 09:14:05

回答

1

Django的身份验证机制无关与谷歌或任何其它身份验证服务。如果您想将第三方认证服务与您的Django网站集成,您应该自己做。

如果您使用的oauth2(https://github.com/simplegeo/python-oauth2)库,它的README(https://github.com/simplegeo/python-oauth2/blob/master/README。 MD)有一个名为“登录到Django W/Twitter”的部分可以帮助你。

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. 
      # ... 
+0

嘿abdul,我没有使用谷歌的任何应用程序或oauth api。我正在使用'oauth2'库并在这之上编写了我的函数......其实我更感兴趣的是获取Django分配给该用户的用户ID ...... – 2011-03-31 09:20:49

相关问题