我想阅读用户与我为我的应用创建的特定用户(myapp)共享的Google文档和Google表格。我已经实施了Google混合服务器幻灯片流(离线访问),以便在用户离线时代表此用户使用Google服务。
我将刷新令牌存储在我的数据库中并使用它来刷新访问令牌。使用访问令牌,我可以查询API。例如,以下代码正确返回“myapp”驱动器上的文件:
// Get the API client
$client = new Google_Client();
$client->setClientId($this->clientId);
$client->setClientSecret($this->clientSecret);
$client->setAccessType('offline');
...
$client->addScope([
'https://spreadsheets.google.com/feeds',
'https://docs.google.com/feeds',
Google_Service_Drive::DRIVE
]);
// Construct the service object
$service = new Google_Service_Drive($client);
$params = array(
'pageSize' => 10,
'fields' => "nextPageToken, files(id, name)"
);
$results = $service->files->listFiles($params);
foreach ($results->getFiles() as $file) {
printf("%s (%s)\n", $file->getName()); // OK
}
... 工作正常!
其他用户将某些文件共享给“myapp”。
现在我想获得共享电子表格的内容:
$fileId = "1GRTldB2....";
$result = $service->files->get($fileId, [
'fields' => 'name,md5Checksum,size,createdTime,modifiedTime,ownedByMe,properties,shared,sharedWithMeTime,webContentLink,webViewLink'
]);
$url = $result['webViewLink'];
//$url = 'https://www.googleapis.com/drive/v3/files/'.$fileId.'?alt=media';
$method = 'GET';
$headers = ["Authorization" => "Bearer $accessToken", "GData-Version" => "3.0"];
$httpClient = new GuzzleHttp\Client(['headers' => $headers]);
$resp = $httpClient->request($method, $url);
$body = $resp->getBody()->getContents();
$code = $resp->getStatusCode();
$reason = $resp->getReasonPhrase();
echo "$code : $reason\n\n";
echo "$body\n";
此代码出错:
致命错误:未捕获异常'GuzzleHttp \ Exception \ ClientException' 带有消息'in C:\瓦帕\ WWW \芯\厂商\ guzzlehttp \狂饮\ SRC \异常\ RequestException.php 在第107行(!)GuzzleHttp \ Exception \ ClientException:客户端错误:
GET https://www.googleapis.com/drive/v3/files/1GRTldB2KDFGmFZgFST28-MaHKs7y7eqelbzDpdxuJBg?alt=media
导致401 Unauthorized
响应:{“error”:{“errors”:[{ “domain”:“global”,“reason”:“authError”,“message”:“无效 凭证“(截断...)in C:\瓦帕\ WWW \芯\厂商\ guzzlehttp \狂饮\ SRC \异常\ RequestException.php 在第107行
authError / InvalidCredentials
有什么想法吗?
答案 0 :(得分:0)
共享表...是否与"用户"共享?您在Google API上使用的是什么?您知道何时右键单击实际文档并说出"分享..."