1

我在阅读 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

这是一个错误吗?还是我误解了文件?

4

1 回答 1

2

如果像上面那样实例化对象,它实际上会返回None. 根据文档

注意:如果您的应用程序构造了 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方法。

于 2012-11-08T17:04:03.770 回答