[英]Google Drive API (PHP) can't list files
我正在編寫一個應用程序以從Google雲端硬盤檢索文件(使用我自己的硬盤帳戶)。
我創建了一個Google服務帳戶來避免OAuth流程,因為我正在使用自己的Google雲端硬盤帳戶。
然后,我從Google取得了以下代碼示例:
function buildService() {
$SERVICE_ACCOUNT_EMAIL = 'xxxx@developer.gserviceaccount.com';
$SERVICE_ACCOUNT_PKCS12_FILE_PATH = 'xxx-privatekey.p12';
$key = file_get_contents($SERVICE_ACCOUNT_PKCS12_FILE_PATH);
$auth = new Google_AssertionCredentials(
$SERVICE_ACCOUNT_EMAIL,
array('https://www.googleapis.com/auth/drive'),
$key);
$client = new Google_Client();
$client->setUseObjects(true);
$client->setAssertionCredentials($auth);
return new Google_DriveService($client);
}
function retrieveAllFiles($service) {
$result = array();
$pageToken = NULL;
do {
try {
$parameters = array();
if ($pageToken) {
$parameters['pageToken'] = $pageToken;
}
$files = $service->files->listFiles($parameters);
$result = array_merge($result, $files->getItems());
$pageToken = $files->getNextPageToken();
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
$pageToken = NULL;
}
} while ($pageToken);
return $result;
}
$service = buildService();
$allFiles = retrieveAllFiles($service);
print_r($allFiles);
當我有文件和文件夾時,它將返回一個空數組:
Array
(
)
在配置中,電子郵件和私鑰都可以,由Google自己提供; 我做錯了什么?
嘗試更改代碼,例如此處https://developers.google.com/drive/delegation :
function buildService($userEmail) {
$SERVICE_ACCOUNT_EMAIL = 'xxxx@developer.gserviceaccount.com';
$SERVICE_ACCOUNT_PKCS12_FILE_PATH = 'xxx-privatekey.p12';
$key = file_get_contents($SERVICE_ACCOUNT_PKCS12_FILE_PATH);
$auth = new Google_AssertionCredentials(
$SERVICE_ACCOUNT_EMAIL,
array('https://www.googleapis.com/auth/drive'),
$key);
$auth->sub = $userEmail;
$client = new Google_Client();
$client->setUseObjects(true);
$client->setAssertionCredentials($auth);
return new Google_DriveService($client);
}
//... function retrieveAllFiles($service)
$service = buildService("some@mail");
$allFiles = retrieveAllFiles($service);
print_r($allFiles);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.