¿Cómo aseguro mis API de Google Cloud Endpoints con la verificación de token de Firebase?

Mi configuración:

Java back-end alojado en Google App Engine que contiene API que se crearon con Google Cloud EndpointsAplicaciones cliente móviles que contienen bibliotecas cliente generadas para los puntos finales mencionados anteriormente. También integrado con Firebase para autenticación y la base de datos.

Mi intención es que un usuario de las aplicaciones de cliente móvil pueda iniciar sesión en la aplicación móvil mediante la autenticación de Firebase, luego conectarse a cualquiera de las API de back-end, que a su vez realizará un procesamiento y luego leerá o escribirá datos en / desde la base de datos de Firebase

Para asegurar las API en el servidor, creo que tendré que usar el método incorporado generateIdToken () del SDK de Firebase Server para (verVerificación de tokens de identificación en Firebase) para decodificar el token de identificación de un usuario pasado de la aplicación cliente. A medida que executeIdToken () se ejecuta de forma asincrónica, ¿cómo lo integraría con un método API en GAE? Tengo algo similar a lo siguiente hasta ahora:

@ApiMethod(name = "processAndSaveToDB", httpMethod = "post")
    public Response processAndSaveToDB(@Named("token") String token) {

        Response response = new Response();           

        // Check if the user is authenticated first
        FirebaseAuth.getInstance().verifyIdToken(idToken)
            .addOnSuccessListener(new OnSuccessListener() {
                @Override
                public void onSuccess(FirebaseToken decodedToken) {
                    String uid = decodedToken.getUid();

                    // do bulk of processAndSaveToDB() method

                })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(Exception e) {

                    // throw unauthorized exception

            });

    return response;
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta