2017-01-27 45 views
6

Tôi đang sử dụng ứng dụng khách google-api-php-client để kết nối với Google Drive bằng Tài khoản dịch vụ. Hầu hết thời gian nó hoạt động, nhưng thường xuyên như vậy (nói nếu tôi ngồi ở đây làm mới trang hơn và hơn nó mỗi 5 đến 10 lần), tôi nhận được một Google_Service_Exception với thông báo unauthorized_client: Client is unauthorized to retrieve access tokens using this method. Lỗi chỉ xảy ra nếu mã $this->drive_service->files->listFiles() xuất hiện. Điều này không xảy ra nếu tôi sử dụng Tài khoản dịch vụ trực tiếp thay vì sử dụng setSubject() để mạo danh người dùng khác.Lỗi ủy quyền tài khoản dịch vụ 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(); 

Mọi suy nghĩ?

Cập nhật ngày 21 tháng 2 năm 2017: Lỗi này không còn liên tục, nó xảy ra mỗi lần, vì vậy tôi hoàn toàn không thể kết nối được với tài khoản thông thường thông qua tài khoản dịch vụ nữa.

Cập nhật ngày 10 tháng 3 năm 2017: Dường như đây là sự hiểu lầm của người dùng. Tài khoản dịch vụ phải được cấp "quyền trên toàn miền" để mạo danh người dùng miền đó - điều tôi chưa làm. Tôi vừa ủy quyền cho khách hàng truy cập vào tài khoản người dùng như được mô tả here.

Trả lời

0

Tôi không biết tại sao lỗi của bạn xảy ra định kỳ nhưng hiểu biết của tôi là để mạo danh người dùng, bạn phải grant the service account access.

+0

Cảm ơn, tôi đã thực hiện việc này. – MarcGuay

0

Tôi đã gặp lỗi này không liên tục khi tài khoản đang mạo danh mới được tạo. Bởi vẻ ngoài của nó, thêm một sự chậm trễ 10 giây trước khi cố gắng để tạo ra các dịch vụ loại bỏ vấn đề.

+0

Bạn nên cung cấp mã mẫu cho giải pháp của mình. – thorb65

+0

Tài khoản người dùng đang mạo danh không được tạo mới. – MarcGuay

Các vấn đề liên quan