如果使用与有效 Google 账号不对应的电子邮件地址调用 User::__construct(),则会创建对象,但该对象与实际的 Google 账号不对应。即使有人在存储了该对象后用指定的电子邮件地址创建了 Google 账号,也将出现这种情况。如果创建 User 值时使用的电子邮件地址当时不代表 Google 账号,则该 User 值将永远不会匹配代表真正用户的 User 值。
有效用户的 User 对象可以为该用户提供唯一的 ID 值,即使该用户更改了其电子邮件地址,该 ID 值也保持不变。getUserId() 方法会返回此 ID,这是一个 string 值。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-09-04。"],[[["\u003cp\u003eThe \u003ccode\u003eUser\u003c/code\u003e class represents a unique user, and two equal instances signify the same user.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eUserService::getCurrentUser()\u003c/code\u003e retrieves the \u003ccode\u003eUser\u003c/code\u003e instance for the current user, regardless of the authentication method.\u003c/p\u003e\n"],["\u003cp\u003eA \u003ccode\u003eUser\u003c/code\u003e instance can be created from an email address, but it may not correspond to a valid Google account.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003egetUserId()\u003c/code\u003e method of a \u003ccode\u003eUser\u003c/code\u003e object provides a unique ID that remains consistent even if the user's email changes.\u003c/p\u003e\n"],["\u003cp\u003eThis API is only for first-generation runtimes, and a migration guide is available for updates to PHP 7/8 runtimes.\u003c/p\u003e\n"]]],[],null,["# User Objects\n\nAn instance of the [User](/appengine/docs/legacy/standard/php/refdocs/classes/google.appengine.api.users.User) class represents a user. User instances are unique and comparable. If two instances are equal, then they represent the same user.\n| This page describes how to use the legacy bundled services and APIs. This API can only run in first-generation runtimes in the App Engine standard environment. If you are updating to the App Engine PHP 7/8 runtime, refer to the [migration guide](/appengine/migration-center/standard/migrate-to-second-gen/php-differences) to learn about your migration options for legacy bundled services.\n\nThe application can access the User instance for the current user by calling the [`UserService::getCurrentUser()`](/appengine/docs/legacy/standard/php/refdocs/classes/google.appengine.api.users.UserService#method_getCurrentUser) function. \n\n use google\\appengine\\api\\users\\UserService;\n\n $user = UserService::getCurrentUser();\n\n if (isset($user)) {\n return sprintf('Welcome, %s! (\u003ca href=\"%s\"\u003esign out\u003c/a\u003e)',\n $user-\u003egetNickname(),\n UserService::createLogoutUrl('/'));\n } else {\n return sprintf('\u003ca href=\"%s\"\u003eSign in or register\u003c/a\u003e',\n UserService::createLoginUrl('/'));\n }\n\nYou can use the `UserService::getCurrentUser()` function no matter which authentication option your app uses.\n\nA User instance can be also constructed from an email address: \n\n $user = new User('Albert.Johnson@example.com');\n\nIf the [`User::__construct()`](/appengine/docs/legacy/standard/php/refdocs/classes/google.appengine.api.users.User#method___construct) is called with an email address that does not correspond with a valid Google account, the object will be created but it will not correspond with a real Google account. This will be the case even if someone creates a Google account with the given email address after the object is stored. A User value with an email address that does not represent a Google account at the time it is created will never match a User value that represents a real user.\n\nThe User object for a valid user can provide a unique ID value for the user that stays the same even if the user changes her email address. The [`getUserId()`](/appengine/docs/legacy/standard/php/refdocs/classes/google.appengine.api.users.User#method_getUserId) method returns this ID, a `string` value.\n\nThe User object has the same form no matter which method of authentication your app uses."]]