【问题标题】:Google Drive API - export as HTML results in 500 Internal ErrorGoogle Drive API - 导出为 HTML 会导致 500 内部错误
【发布时间】:2018-04-03 18:09:56
【问题描述】:

几个月来,我一直在使用 Google Drive API 来获取我创建的 Google Drive 文档的内容,并将其导出为 HTML 以嵌入到我的网络应用程序中。

示例代码:

$client = new Google_Client();
$client->setApplicationName('My App');
$client->setScopes(Google_Service_Drive::DRIVE_READONLY);
$client->setDeveloperKey(GOOGLE_DRIVE_API_KEY);
$client->setAccessType('offline');

$service = new Google_Service_Drive($client);

$files = $service->files->listFiles([
    'q'       => "'" . GOOGLE_DRIVE_RN_FOLDER_ID ."' in parents",
    'orderBy' => 'createdTime desc',
]);

foreach($files as $file)
{
    $response = $service->files->export(
        $file->id, 
        'text/html', 
        array(
            'alt' => 'media'
        )
    );

    $html = $response->getBody()->getContents();
}

这个代码上周坏了,我不知道为什么。 $service->files->listFiles() 方法成功运行(我可以在响应中看到文件名),但 $service->files->export() 方法返回 500 Internal Error。示例响应:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "internalError",
    "message": "Internal Error"
   }
  ],
  "code": 500,
  "message": "Internal Error"
 }
}

尝试直接在网络浏览器中访问 API URL 时,我也收到同样的错误:https://www.googleapis.com/drive/v3/files/1-DTp74pyo5nnDyR9cWt_d7oi7OdS7JwAZ6ZrKSQ54p0/export?mimeType=text%2Fhtml&key={my_key}

我尝试重新生成 API 密钥,创建一个新项目并生成一个全新的 API 密钥。我继续收到同样的错误。

【问题讨论】:

  • 它适用于不同的文件吗?如果是这样,那么问题在于您运行它的文件的最近更改。对于“我什么都没做,但它破坏了”“问题”,我们可以做的事情并不多。
  • 典型的谷歌。没有员工回复,这并不奇怪。它让我发笑。错误 500 仅表示 Google 的服务器存在问题,请尝试指数回退。这对我有用。但是,有一个问题,工程团队知道是什么,他们只是不会说什么。
  • 确实如此。典型的谷歌

标签: php google-api google-drive-api export google-api-php-client


【解决方案1】:

Google 显然更改了它的 API,答案显然是使用服务帐户,但我仍在等待更新。

这可能会回答你的问题,但我没有运气:Google Drive API's file Export endpoint is failing with API Key authentication?

如果您得到答案,请告诉我们!

【讨论】:

  • 啊哈。从 API 密钥切换到服务帐户立即生效。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
  • 2013-08-11
  • 2012-03-29
相关资源
最近更新 更多