【发布时间】:2013-11-26 23:06:16
【问题描述】:
网络客户端:https://gcl-11.appspot.com/
源代码:https://github.com/gertcuykens/gcl-11/blob/master/android/src/my/endpoints/EndpointsActivity.java
本示例使用 google 端点和 android。我设法让它工作,除了在没有bad username 错误的情况下访问服务器之前,未经身份验证的请求也必须先登录。在 webclient 中它不是。
关于:
EndpointsClient.Builder endpoints = new EndpointsClient.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential);
问题:
是否可以在 google 端点中为非用户对象 api 请求使用匿名 android 客户端?我尝试设置一个空的帐户名称,但后来我得到bad username?
credential = GoogleAccountCredential.usingAudience(this, AUDIENCE);
credential.setSelectedAccountName("");
如果没有,我可以不使用getSelectedAccountName()指定一个默认值吗?
还有,为什么这不会像 webclient 一样返回用户电子邮件?
Message response = service.post("greetings/authed", null).setOauthToken(token).execute();
【问题讨论】:
-
当您说“匿名”时,您的意思是您不希望客户端进行身份验证吗?
-
仅当服务器需要一个用户对象时,就像我为 Web 客户端所做的那样。看来我需要在 android 中为所有 api 请求设置一个凭据,并为服务器用户对象设置一个额外的 oauth2 令牌,当 android 发出 api 请求时我还没有设法开始工作。
-
这是调用github.com/gertcuykens/gcl-11/blob/master/appengine/rs/src/main/… 吗?如果是这样,除非您传递有效的用户对象,否则您将获得 NPE。我认为您在 Android 中看到的行为正在按预期工作,更大的问题是,如果您不进行身份验证,为什么您的 Web 客户端可以正常工作。
-
正如您在gcl-11.appspot.com 中看到的非用户 api 请求一样 :)
-
如果我在没有登录的情况下点击了经过身份验证的问候端点,它将返回“未定义”。当然,其他 API 调用也会起作用(它们不需要身份验证)。如果您向未经身份验证的 API 发出请求,则无需将凭据对象传递给
EndpointsClient.Builder。
标签: java android google-app-engine google-cloud-endpoints