2017-01-27 16 views
6

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.

Odpowiedz

0

Ten błąd występował sporadycznie, gdy konto, które jest podszywane, zostało utworzone. Wygląda na to, że dodanie 10-sekundowego opóźnienia przed próbą utworzenia usługi eliminuje problem.

+0

Powinieneś podać przykładowy kod dla swojego rozwiązania. – thorb65

+0

Podane konto użytkownika nie jest nowo utworzone. – MarcGuay

Powiązane problemy