我已经使用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实时数据库调用到需要身份验证的区域。并且端点设置正确,因为我可以对我的其他端点(目前不需要身份验证)进行未经身份验证的调用。它只是两者的组合被打破。
答案 0 :(得分:0)
正如Google Groups post中所述,您需要从配置中删除SystemServiceServlet,并从列表中删除com.google.appengine:appengine-endpoints依赖项。