我正在使用PHP和服务帐户连接测试文件并将其上传到Google云端硬盘。它没有给我任何错误,但当我使用我的帐户登录谷歌驱动器并检查此文件。我找不到它。为什么? 请帮忙。
我使用了以下代码:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
set_include_path( get_include_path() . PATH_SEPARATOR . 'google-api-php-client-master/src' );
require_once 'google-api-php-client-master/src/Google/Client.php';
require_once 'google-api-php-client-master/src/Google/Service/Drive.php';
require_once "google-api-php-client-master/src/Google/Service/Oauth2.php";
session_start();
$DRIVE_SCOPE = 'https://www.googleapis.com/auth/drive';
$SERVICE_ACCOUNT_EMAIL = '<xyz>@developer.gserviceaccount.com';
$SERVICE_ACCOUNT_PKCS12_FILE_PATH = '<abc>-privatekey.p12';
$key = file_get_contents($SERVICE_ACCOUNT_PKCS12_FILE_PATH);
$auth = new Google_Auth_AssertionCredentials(
$SERVICE_ACCOUNT_EMAIL,
array($DRIVE_SCOPE),
$key);
$client = new Google_Client();
//$client->setUseObjects(true);
$client->setAssertionCredentials($auth);
$service = new Google_Service_Drive($client);
//Insert a file
$file = new Google_Service_Drive_DriveFile();
$file->setTitle('My document');
$file->setDescription('A test document');
$file->setMimeType('text/plain');
$data = file_get_contents('My document.txt');
$createdFile = $service->files->insert($file, array(
'data' => $data,
'mimeType' => 'text/plain',
'uploadType' => 'media'
));
print_r($createdFile);
?>
</body>
</html>
答案 0 :(得分:1)
您创建的文档与您的服务帐户相关联。您无法使用自己的服务帐户登录Google云端硬盘网站。 Explanation of service accounts解释了这一点。您有两种选择:
如果您的服务帐户和个人帐户可以看到该文档非常重要,请使用个人Google帐户创建该文档,并与您的服务帐户共享(通过电子邮件地址)。
了解文档确实存在,但仅供服务帐户使用。在代码示例的$ createdFile变量中,您将看到&#34; downloadUrl&#34;属性。在下面的代码中使用此网址。
$ request = new Google_Http_Request();
$ requestSigned = self :: $ client-&gt; getAuth() - &gt; sign($ request);
$ response = self :: $ client-&gt; getIo() - &gt; makeRequest($ requestSigned);
$ requestSigned-&GT; getResponseBody();
使用get method或list方法,您还可以检索&#34; downloadUrl&#34;稍后您的文件。