我如何才能让Google Cloud Endpoints使用Firebase身份验证(非Google帐户)进行身份验证呼叫?

问题描述:

我有一个使用Google Cloud Endpoints框架设置的API。其中一个端点需要auth,这显然可以通过Android上的Firebase Auth完成。但给出here的示例适用于通过Firebase提供的Google帐户。我只是使用电子邮件和密码。所以我使用的是HttpRequestInitializer here而不是GoogleAccountCredential。但是,当我试图对经认证的终点,我收到了503响应与服务器产生下面的堆栈跟踪呼叫:我如何才能让Google Cloud Endpoints使用Firebase身份验证(非Google帐户)进行身份验证呼叫?

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身份验证本身设置正确,因为我可以将Firebase实时数据库调用到需要身份验证的区域。并且终端设置正确,因为我可以对我的其他终端(目前不需要身份验证)进行未经身份验证的呼叫。这只是两个被打破的组合。

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