12

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

我注意到python 的issue 8848似乎与这个问题非常相似。

java api中也存在同样的问题吗?方法

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 身份验证,联合身份和 userId 也会显示 null。电子邮件地址正确显示在日志中。顺便说一句,这一切都在部署的应用程序上。

有人对什么是错的有任何其他建议吗?该问题的任何已知解决方法?我已按照https://developers.google.com/appengine/docs/java/endpoints/consume_android#making-authenticated-calls中建议的方法设置我的 android 客户端。

4

2 回答 2

5

您是正确的,问题 8848 是相同的原因。根本问题与语言无关,会影响两个运行时。目前,您不应该期望User通过 Endpoints 中的方法参数传入的对象中填充的用户 ID 字段。

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

于 2013-04-24T17:59:50.787 回答
-1

我在问题中遵循了相同的文档参考,并且遇到了同样的问题。

最后通过执行以下操作使端点与 OAuth2 一起工作:

我更新到了 Google Play 服务的更新;现在是第 15 版(Android SDK)。

端点文档已更新为声明您应该为您的应用程序启用 Google Plus API,即使您只是将 userinfo.email 范围用于您的应用程序引擎端点。我是通过 Cloud Console 完成的。

此外,最后,有一条新说明指出 OAuth2 在模拟器中不起作用。我证实了这一点。即使指向生产应用程序引擎,我仍然会从 Android 模拟器中收到 null 用户错误。所以我仍然只能从真实设备测试端点。

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

于 2014-03-01T03:49:41.143 回答