Estávamos ficando muito frustrados em tentar descobrir por que Angular, Google e OAuth 2.0 não estavam jogando bem um com o outro.
A ideia é que você peça à biblioteca OAuth 2.0 por um usuário, que ele retorna para o seu navegador. Então, quando você usa sua biblioteca cliente para acessar sua biblioteca do Google Cloud Endpoints, qualquer método de API que aceite um objeto User magicamente terá um fornecido.
Em nosso caso, o usuário estava sendo retornado da biblioteca OAuth e estava acessível ao navegador, mas por algum motivo sempre chegava à API do Google Cloud Endpoints como nulo. Isso foi extremamente frustrante, mas quando finalmente descobrimos o motivo, foi uma solução simples:
Não defina um URI de redirecionamento em seu ID do cliente do aplicativo da web