Como protejo minhas APIs do Google Cloud Endpoints com a verificação de token do Firebase?

Minha configuração:

Back-end Java hospedado no Google App Engine contendo APIs criadas usando o Google Cloud EndpointsAplicativos clientes móveis que contêm bibliotecas de clientes geradas para os terminais mencionados acima. Também integrado ao Firebase para autenticação e banco de dados.

Minha intenção é que um usuário dos aplicativos clientes móveis consiga efetuar login no aplicativo móvel usando a autenticação Firebase, depois conectar-se a qualquer uma das APIs de back-end, que por sua vez, processará e lerá ou gravará dados de / para o banco de dados Firebase.

Para proteger as APIs no servidor, acho que vou precisar usar o método confirmIdToken () interno do Firebase Server SDK para (consulteVerificando ID Tokens no Firebase) para decodificar o token de ID do usuário transmitido do aplicativo cliente. Como CheckerIdToken () é executado de forma assíncrona, como eu o integraria a um método API no GAE? Até agora, tenho algo semelhante ao seguinte:

@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;
}

questionAnswers(1)

yourAnswerToTheQuestion