google-api-php-client“error”:“unauthorized_client”

时间:2017-03-09 16:40:03

标签: php google-drive-api google-api-php-client

我们正在尝试构建一项服务,以便在我们的gsuite域中导出Google驱动器文件。

我们正在使用https://github.com/google/google-api-php-client

我们创建了一个服务用户,下载并保存了用户凭据,并授予了对服务用户的域范围访问权限。

使用下面最简单的示例(就像在每个文档中一样,我发现):

putenv('GOOGLE_APPLICATION_CREDENTIALS='/service-account-credentials.json');

$client = new \Google_Client();
$client->setAuthConfig('service-account-credentials.json');

$client->setScopes('https://www.googleapis.com/auth/drive.file');

$client->useApplicationDefaultCredentials();
$client->setSubject('admin@mydomain.com');

$service = new \Google_Service_Drive($client);

$service->files->listFiles(); 

只要我们包含第$client->setSubject('admin@mydomain.com');行,就会丢失以下错误:

{
    "error": "unauthorized_client",
    "error_description": "Client is unauthorized to retrieve access tokens using this method."
}

有任何想法,或者可以共享此问题的代码示例。这对我们来说是一个真正的阻碍,现在我不知道为什么会出现这个错误

1 个答案:

答案 0 :(得分:2)

我终于成功了

经过几次尝试后,我意识到我正在委托全域访问错误的Client-ID。我一直以为这应该和" client_email"我在剧本中使用。但它确实(真的,真的,非常重要),这就是" client_id" (顺便提一下在文档中提到)。这不是电子邮件或字符串,只是您在为服务帐户创建密钥时获得的简单数字。