Używam klienta google-api-php-client do łączenia się z Dyskiem Google przy użyciu konta usługi. Przez większość czasu działa, ale co jakiś czas (powiedzmy, że siedzę tutaj odświeżam stronę w kółko raz na 5 do 10 razy), otrzymuję Google_Service_Exception
z komunikatem unauthorized_client: Client is unauthorized to retrieve access tokens using this method
. Błąd występuje tylko wtedy, gdy obecny jest kod $this->drive_service->files->listFiles()
. Nie występuje, gdy korzystam z konta usługi bezpośrednio, a nie pod numerem setSubject()
, aby podszywać się pod innego użytkownika.Błąd autoryzacji konta usługi interfejsu API Google
$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();
Jakieś myśli?
Aktualizacja 21 lutego 2017 r .: Błąd nie jest już sporadyczny, zdarza się za każdym razem, więc nie mogę już połączyć się z żadnym zwykłym kontem za pośrednictwem konta usługi.
Aktualizacja 10 marca 2017: Wydaje się, że jest to nieporozumienie użytkownika. Konto usługi musi mieć "uprawnienie do całej domeny", aby podszywać się pod użytkowników tej domeny - czego nie zrobiłem. Po prostu upoważniłem klienta do dostępu do konta użytkowników zgodnie z opisem here.
Dzięki, już to zrobiłem. – MarcGuay