Error de autorización de cuenta de servicio API de Google

Estoy usando elgoogle-api-php-client cliente para conectarse a Google Drive usando una cuenta de servicio. La mayoría de las veces funciona, pero de vez en cuando (digamos que si me siento aquí y actualizo la página una y otra vez cada 5 a 10 veces), recibo unGoogle_Service_Exception con el mensajeunauthorized_client: Client is unauthorized to retrieve access tokens using this method. El error solo ocurre si el$this->drive_service->files->listFiles() El código está presente. No ocurre si uso la cuenta de servicio directamente en lugar de usarsetSubject() hacerse pasar por otro usuario.

        $this->client = new Google_Client();
        $this->client->useApplicationDefaultCredentials();
        $this->client->addScope("https://www.googleapis.com/auth/drive");
        $this->client->setSubject('xxxx');
        $this->drive_service = new Google_Service_Drive($this->client);
        $files = $this->drive_service->files->listFiles();

¿Alguna idea?

Actualización 21 de febrero de 2017: el error ya no es intermitente, ocurre cada vez, por lo que ya no puedo conectarme a una cuenta normal a través de una cuenta de servicio.

Actualización 10 de marzo de 2017: Parece que este es un malentendido del usuario. La cuenta de servicio debe tener "autoridad en todo el dominio" para suplantar a los usuarios de ese dominio, algo que no he hecho. Simplemente había autorizado a un cliente para acceder a la cuenta de los usuarios como se describeaquí.

Respuestas a la pregunta(2)

Su respuesta a la pregunta