如何使用Firebase Auth(非Google帐户)将Google Cloud Endpoints用于经过身份验证的呼叫?

时间:2017-06-20 15:54:26

标签: android google-app-engine oauth-2.0 firebase-authentication google-cloud-endpoints

我已经使用Google Cloud Endpoints框架设置了API。其中一个端点需要auth,显然可以在Android上使用Firebase Auth完成。但给出here的示例是针对Google帐户的Firebase。我只是使用电子邮件和密码。因此,我使用的是HttpRequestInitializer here,而不是GoogleAccountCredential。但是当我尝试调用经过身份验证的端点时,我得到503响应,服务器产生以下堆栈跟踪:

Uncaught exception from servlet
java.lang.IllegalStateException: method_info is not set in the request
    at com.google.api.server.spi.auth.EspAuthenticator.authenticate(EspAuthenticator.java:67)
    at com.google.api.server.spi.request.Auth.authenticate(Auth.java:85)
    at com.google.api.server.spi.request.ServletRequestParamReader.getUser(ServletRequestParamReader.java:157)
    at com.google.api.server.spi.request.ServletRequestParamReader.deserializeParams(ServletRequestParamReader.java:114)
    at com.google.api.server.spi.request.ServletRequestParamReader.read(ServletRequestParamReader.java:261)
    at com.google.api.server.spi.SystemService.invokeServiceMethod(SystemService.java:354)
    at com.google.api.server.spi.SystemServiceServlet.execute(SystemServiceServlet.java:113)
    at com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceServlet.java:71)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    ...

有什么想法吗?

Firebase Auth本身设置正确,因为我可以将Firebase实时数据库调用到需要身份验证的区域。并且端点设置正确,因为我可以对我的其他端点(目前不需要身份验证)进行未经身份验证的调用。它只是两者的组合被打破。

1 个答案:

答案 0 :(得分:0)

正如Google Groups post中所述,您需要从配置中删除SystemServiceServlet,并从列表中删除com.google.appengine:appengine-endpoints依赖项。