返回

无需 OAUTH2 凭据,如何使用 PHP 代码访问普通 Google 网盘?

php

使用 PHP 访问普通 Google 网盘,无需 OAUTH2 凭据

引言

管理 Google 网盘是办公室工作流程中一个普遍需求。通常,使用 OAUTH2 授权或服务帐号来访问网盘。然而,对于需要访问特定普通用户网盘的情况,这两种方法都存在局限性。本文介绍了一种通过使用 Google Cloud API 和服务帐号,无需提供用户密码即可访问普通 Google 网盘的方法。

问题

我们希望使用 PHP 代码访问特定普通 Google 帐号(user@example.com)的网盘,而无需提供该帐号的密码。此外,我们希望其他用户,如老板(boss@example.com),仍可以通过标准网盘 Web 界面轻松访问该网盘。

解决方案

1. 创建服务帐号

创建一个服务帐号并授予其对 user@example.com 网盘的访问权限。

2. 下载服务帐号凭据

下载服务帐号的 JSON 凭据文件。

3. 在 PHP 中加载凭据

在 PHP 脚本中,使用 Google\Client 类加载服务帐号凭据。

4. 设置范围

将范围设置为 https://www.googleapis.com/auth/drive

5. 创建 Drive 服务

使用 Google\Service\Drive 类创建 Drive 服务对象。

6. 使用 Drive 服务

使用 Drive 服务对象访问 user@example.com 的网盘。

代码示例

<?php

use Google\Client;
use Google\Service\Drive;

// 加载服务帐号凭据
$client = new Client();
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/drive');
$client->setAuthConfig('credentials.json');

// 创建 Drive 服务对象
$driveService = new Drive($client);

// 访问 user@example.com 的网盘
$files = $driveService->files->listFiles();
foreach ($files as $file) {
  echo $file->getName() . PHP_EOL;
}

优势

  • 无需向员工提供 user@example.com 的密码。
  • 老板可以使用标准网盘 Web 界面访问网盘。
  • 应用程序可以使用 PHP 代码自动化文件上传和管理。

限制

  • 需要设置和管理 Google Cloud 项目和服务帐号。
  • 应用程序需要对 Google Cloud API 有访问权限。

结论

本文提供了一种方法,通过使用 Google Cloud API 和服务帐号,无需提供用户密码即可访问普通 Google 网盘。这种方法解决了需要访问特定用户网盘并同时保持其他用户访问权限的场景。

常见问题解答

  • 此方法是否适用于所有版本的 Google 网盘?

是,此方法适用于 Google 网盘的所有版本,包括个人和商业版。

  • 服务帐号是否需要权限才能访问网盘?

是的,服务帐号需要被授予 user@example.com 网盘的访问权限。

  • 如何授予服务帐号访问权限?

可以通过 Google Cloud Console 管理服务帐号的访问权限。

  • 此方法是否适用于其他云平台?

此方法特定于 Google Cloud API,因此不适用于其他云平台。

  • 此方法是否安全?

是的,此方法是安全的,因为它使用 Google Cloud API 和服务帐号来授权访问。