如何使用Google Drive API(v3)阅读共享工作表的内容? authError

时间:2016-03-22 16:57:17

标签: google-api google-drive-api google-oauth google-api-php-client guzzle

我想阅读用户与我为我的应用创建的特定用户(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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

共享表...是否与"用户"共享?您在Google API上使用的是什么?您知道何时右键单击实际文档并说出"分享..."