【问题标题】:How to create a anonymous android.gms.auth.GoogleAccountCredential for google endpoints如何为谷歌端点创建匿名 android.gms.auth.GoogleAccountCredential
【发布时间】: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


【解决方案1】:

在与上面的 Dan Holevoet 讨论后,我尝试了一个远射,并将 GoogleAccountCredential credential 替换为 HttpRequestInitializer noCredential,这突然适用于未经身份验证的请求。

编辑: credential = null; 也可以。

【讨论】:

  • 如果您将凭据设置为空,您只是进行了通用调用,并且没有身份验证。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
相关资源
最近更新 更多