我在阅读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
这是一个错误吗?或者我是否误解了该文件?
答案 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
方法。