当前位置: 首页 > 知识库问答 >
问题:

访问谷歌驱动器API服务号有时会失败

潘向明
2023-03-14

进入带有服务号凭据的谷歌驱动器api,上传特定用户的文件j********@gmail.com.

我在谷歌开发者API控制台创建我的帐户服务凭据。我添加用户权限j****@gmail.com我授权我的应用j****@gmail.com

但有时候这种信息会失败

Google_Service_Exception

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

这是我的auth代码

if ($credentials_file = checkServiceAccountCredentialsFile()) {
  // set the location manually
  $client->setAuthConfig($credentials_file);
} elseif (getenv('GOOGLE_APPLICATION_CREDENTIALS')) {
  // use the application default credentials
  $client->useApplicationDefaultCredentials();
} else {
  echo missingServiceAccountDetailsWarning();
  return;
}
$client->setSubject('j******@gmail.com');
$client->setScopes(['https://www.googleapis.com/auth/drive']);
$service = new Google_Service_Drive($client);
$files = $service->files->listFiles();

共有1个答案

朱海超
2023-03-14

您可以使用Google API Client Library for PHP创建使用OAuth 2.0授权访问Google API的web服务器应用程序。此外,web应用程序在进行API调用时也经常使用服务帐户,特别是在调用云API以访问基于项目的数据而不是特定于用户的数据时。这些机制可以与web服务器应用程序中的用户授权结合使用。

关于您的错误,通常发生在请求未能通过验证的情况下。如这里所述,如果您使用Oauth2,您需要为将使用您的应用程序的每个用户提供一个刷新令牌。您可以查看本教程,了解OAuth2的工作原理。

 类似资料:
  • 我为我的帐户name@steelkiwi.com(谷歌应用程序)创建了服务帐户,我的应用程序运行良好。然后我为我的个人帐户name@gmail.com创建了服务帐户,为我的应用程序使用这个新的凭据,现在当我试图插入文件时,我得到错误500和下一个文本: HttpError 500请求https://www.googleapis.com/upload/drive/v2/files时?quotause

  • 下面是https://github.com/google/google-api-nodejs-client的代码。 一般问题:刷新令牌实际上如何与访问令牌一起工作? 背景:根据我的解释,每个访问令牌都有一个有限的时间跨度(~1小时)。因此,当用户第一次连接到我的服务器(服务器为用户身份验证提供了机制)时,服务器将收到有限生命期访问令牌和一次性刷新令牌。1小时后,访问令牌过期。 谢了!

  • 我正在工作上传文件在谷歌驱动器与服务帐户,我能够插入文件在谷歌驱动器,但我不能查看该文件在谷歌驱动器。 我是创建abc@gmail.com。用abc@gmail.com创建一个服务帐户。有了P12证书和服务客户端电子邮件id,我可以在驱动器中插入文件。但无法在abc@gmail.com的谷歌驱动器上看到该文件。当fatch从应用程序中的文件列表时,它将显示5个文件,但在我的abc@gmail.co

  • 这段代码对我来说很好,但在可能24小时后,我需要再次进行身份验证过程。我希望这个认证过程只做一次,因为在我的项目中,他们将没有人参与,所以没有人会手动进行认证。任何帮助都将不胜感激。

  • 我有一个谷歌云平台服务号,启用了域范围的委托和范围。 直到最近,使用此帐户的服务器连接到三个不同的驱动器、在它们下面创建文件夹或返回文件夹内容都没有任何问题。服务器从2020年初/中期开始使用该帐户,这些API调用已经正常工作了很长时间。 现在,当服务器试图在驱动器下创建文件夹或在驱动器下列出目录内容时,会收到404。驱动器和文件夹肯定存在——我可以在谷歌驱动器网页上访问它们。这让我相信这是一个权

  • 我想使用谷歌驱动器作为一个网站的准CMS工作,我正在使内容所有者可以编辑他们的内容使用谷歌驱动器。我希望使用一个可以访问Google Drive的特定用户帐户(在写这篇文章时,服务帐户不能直接访问Google Drive),并且能够与内容所有者共享文档。 在阅读了API和教程之后,我在委托中找到了答案:https://developers.google.com/drive/development