我正在尝试将我的 Google App Engine Endpoints API 中的用户与 Google App Engine Web 前端的用户相关联,例如需要身份验证的 .jsp 页面。
我可以对两者进行身份验证,但 Endpoints API 有一个用户类型
com.google.api.server.spi.auth.common.User
在应用引擎中,用户属于以下类型:
com.google.appengine.api.users.User
我的问题是getUserId()
这两种类型中的每一种都返回不同的值。
每个都有一个方法 getUserId(),但对于同一个用户(相同的电子邮件地址)来说是不同的。
我如何将两者联系起来?
显然我可以使用电子邮件地址,但最佳实践表明最好不要这样做,因为用户可以有效地更改他们的电子邮件地址(或有多个)。
返回 114374052554615681603,与我的Google+ 个人资料上的com.google.api.server.spi.auth.common.User::getUserId()
用户 ID 相同,而返回 113407138228786534305,这是不同的,所以我的直觉是前者是“正确的”,而后者是“错误的”。com.google.appengine.api.users.User::getUserId()
我试着做
com.google.appengine.api.users.User currentUser = UserServiceFactory.getUserService().getCurrentUser();
来自 API,但currentUser
为空。
从另一种方式来看,我可以调用https://www.googleapis.com/oauth2/v1/userinfo API 以从 App Engine 页面获取配置文件,但这需要一个 Authorization 标头,代表已记录在用户上,我没有。
我怎样才能在不比较电子邮件地址的情况下将两者结合起来?