Java 云端点api中的函数User.getUserId()为非null的用户对象返回null

Java 云端点api中的函数User.getUserId()为非null的用户对象返回null,java,android,google-cloud-endpoints,Java,Android,Google Cloud Endpoints,我在获取云端点方法的用户ID时遇到问题。我在android客户端中使用了oauth2身份验证,并将凭据传递给了我的服务。下面的内容与我的方法类似(简化以使其更清晰) 我注意到,for python似乎与这个问题非常相似 同样的问题在JavaAPI中也是一个问题吗?方法 public SuccessCode doSomething(WireFormat wire, User user){ log.info("User id: "+user.getUserId()); log.inf

我在获取云端点方法的用户ID时遇到问题。我在android客户端中使用了oauth2身份验证,并将凭据传递给了我的服务。下面的内容与我的方法类似(简化以使其更清晰)

我注意到,for python似乎与这个问题非常相似

同样的问题在JavaAPI中也是一个问题吗?方法

public SuccessCode doSomething(WireFormat wire, User user){
    log.info("User id: "+user.getUserId());
    log.info("Federated identity: "+user.getFederatedIdentity());
    log.info("Email address: "+user.getEmail());
}
即使android客户端中的凭据已执行oauth2身份验证,联邦标识和用户标识也将显示null。电子邮件地址在日志中正确显示。顺便说一句,这一切都在已部署的应用程序上


有人对什么地方出了问题还有其他建议吗?这个问题有什么已知的解决方法吗?我已经按照中建议的方法设置了我的android客户端。

您是正确的,问题8848也是相同的原因。根本的问题是语言不可知的,并且影响两个运行时。此时,您不应该期望在通过端点中的方法参数传入的
user
对象中填充user ID字段


超次优的解决方法是将
用户
对象持久化到数据存储并读回。重新读取的对象将包含用户ID。

我在问题中使用了相同的文档引用,并且遇到了相同的问题

通过执行以下操作,最终获得使用OAuth2的端点:

有一个谷歌游戏服务的更新,我更新到;现在是版本15(Android SDK)

端点文档已更新,说明您应该为您的应用程序启用Google Plus API,即使您只是为应用程序引擎端点使用userinfo.email范围。我是通过云控制台完成的

另外,最后还有一条新的注释,指出OAuth2不能在模拟器上工作。我证实了这一点。即使指向生产应用程序引擎,我仍然从Android仿真器中得到空用户错误。因此,我仍然只能从真实设备测试端点


我能够确认我需要上述三个步骤。

谢谢。我想我会试试解决办法。至少我现在知道并可以等待一个错误修复。看来这还没有修复。我有一个云端点后端,每当我调用getUserId时,它都返回null。但是,是否需要使用用户id?电子邮件也是独一无二的,我认为用户不可能更改他们的电子邮件地址。有信心做到这一点吗?正在尝试实施这一糟糕的解决方案,或者使用电子邮件作为密钥。您能否提供上述声明的链接?我已经开始使用endpoint开发应用程序,但我从未见过任何关于启用Google+API的内容。这个解决方案似乎与问题无关。问题出现在后端appengine/cloud端点中。您所描述的是前端android代码。