当我从 php 运行 API 时,返回的唯一项目是"如何开始使用驱动器"文件,该文件不在文件夹中,但是当我从 API 网页运行 retrieveListOfAllFiles() 时,我看到了驱动器中的所有文件。 这是代码。
set_include_path(ABSPATH . "path-to/api/google-api-php-client/src/");
require_once "Google/Client.php";
require_once "Google/Service/Drive.php";
require_once "Google/Auth/OAuth2.php";
require_once "Google/Auth/AssertionCredentials.php";
define('CLIENT_ID', 'xxxxx');
define('SERVICE_ACCOUNT_NAME', 'xxxxx');
$key = file_get_contents(ABSPATH . "path-to-.p12");
$scopes = array('https://www.googleapis.com/auth/drive.readonly');
$client = new Google_Client();
$client->setApplicationName("xxxx");
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$auth = new Google_Auth_AssertionCredentials(
SERVICE_ACCOUNT_NAME,
$scopes,
$key
);
$client->setAssertionCredentials($auth);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($auth);
}
$_SESSION['service_token'] = $client->getAccessToken();
$service = new Google_Service_Drive($client);
$files = retrieveAllFiles($service);
文件仅返回"如何开始使用驱动器"文件 - 其中作为此页面的 API 测试:https://developers.google.com/drive/v2/reference/files/list 返回驱动器中的所有文件。
Id是正确的,.p12文件是新的并且正在加载,我不知道出了什么问题。
我还注意到,如果我var_dump()这个的输出
dump($service->files->listFiles(array()));
我也只得到一个"如何开始使用驱动器"文件。 因此,即使我没有收到任何OAuth2错误,并且获得了密钥令牌等,我想要列出文件的驱动器似乎也没有被访问。
问题已解决。 必须与 API 用户共享云端硬盘中的文件夹 - 以 @developer.gserviceaccount.com 结尾的电子邮件 - 我在任何地方的文档中都没有看到......也许我是瞎子。 但是这些 API 文档似乎已经过时了。