具有有效电子邮件的AppEngine用户服务的用户构造函数返回没有user_id的用户

时间:2012-11-08 16:55:52

标签: google-app-engine

我在阅读AppEngine用户服务文档https://developers.google.com/appengine/docs/python/users/userobjects时的理解是,如果我们使用有效的电子邮件地址初始化用户,则创建的用户应具有有效的user_id。但是,当我尝试这段代码时

from google.appengine.api import users

user = users.User('valid_email@gmail.com')
print user.user_id()

在开发服务器和真正的AppEngine环境中,我总是得到

None

这是一个错误吗?或者我是否误解了该文件?

1 个答案:

答案 0 :(得分:2)

如果像上面那样实例化了对象,它实际上会返回None。根据{{​​3}}:

  

注意:如果您的应用程序构造User实例,那么API将会   没有为user_id设置值,它返回None

为了使用user_id方法,我建议使用user = users.get_current_user()结构,如果用户未登录,则允许他们使用自己的Google帐户进行身份验证。例如:

user = users.get_current_user()
if user:
    self.response.out.write(user.user_id())
else:
    self.response.out.write(
        "<a href=\"%s\">Sign in</a>." % users.create_login_url("/"))

您可以在文档中找到类似的示例,但经过身份验证后,您将能够访问user_id方法。