【问题标题】:Is it possible to use the Google Drive API with Spreadsheet API是否可以将 Google Drive API 与电子表格 API 一起使用
【发布时间】:2013-04-09 22:50:28
【问题描述】:

有没有办法将电子表格 API 与 Drive API 结合起来?我的意思是,如果我有来自 Google Drive 的文件 ID,我可以使用相同的 ID 和相同的 oAuth 凭据切换到电子表格 API 吗?

我正在使用 php,并且资源很少,尤其是电子表格 api - 我很惊讶周围的资源如此之少。

【问题讨论】:

  • 还有 google-apps-script 它有一个电子表格 api 并且比“google-spreadsheet-api”有更多的功能。
  • 事情是我在一个现有的网络应用程序中工作,我想从中更新一个谷歌电子表格。或许反过来也值得考虑?

标签: php google-drive-api google-spreadsheet-api


【解决方案1】:

您还需要为以下范围的用户授予权限:

https://spreadsheets.google.com/feeds

两个 API 上的资源 ID 相同。我在云端硬盘上用0AifSjdPVs9MZdE10eXZTVHVneW9aYjJGVFMxV0VYUEE 标识的电子表格文件可通过具有相同 ID 的电子表格 API 访问:

https://spreadsheets.google.com/feeds/spreadsheets/0AifSjdPVs9MZdE10eXZTVHVneW9aYjJGVFMxV0VYUEE

注意:我将电子表格设为公开可读,您可以使用此文件试用电子表格 API 后端。

【讨论】:

  • 啊,太棒了,谢谢。当我需要通过 Drive 访问/编辑我拥有 ID 的私人文档时怎么样。如何使用带有 oauth 访问令牌的电子表格 API?
  • @koorb,您可以使用现有的访问令牌来验证您的请求。在您的电子表格 API 请求中添加一个“授权:承载 [your_existing_access_token]”标头,它应该可以正常工作。
  • 王牌。我可以使用 google-api-php-client 使用 Google 电子表格 API 吗?比如用 Google_REST 或其他东西发出请求?
  • @koorb,不,你不能。电子表格 API 是一个 GData API——一个曾经被所有 Google API 使用的古老协议。他们有一个客户端库,但由于弃用,我认为它不再被维护:developers.google.com/gdata/articles/…
  • 好的,您认为电子表格 API 会更新为在 Drive API 中工作吗?
【解决方案2】:

这是我想出的解决方案:

  1. 获取 google-api-php-client 库和 Zend GData 库(Zend Framework 1.2,具有依赖项)。
  2. 使用 Google API 用于处理登录和身份验证的 Google_Oauth2Service 类。是 确保您的“范围”包括https://www.googleapis.com/auth/drive AND https://spreadsheets.google.com/feeds.
  3. 一旦 oauth2 握手完成(您可以找到相关文档的详细信息),您将拥有一个令牌,它是一个 json 编码的字符串。把它变成一个 PHP 对象:$tok = json_decode([token string])
  4. 这就是神奇之处:只需将令牌的访问部分提供给 Zend 库

$authsub = Zend_Gdata_AuthSub::getHttpClient($tok->access_token);
$spreadsheet_service = new Zend_Gdata_Spreadsheets($authsub);

现在您可以使用 Zend 库中记录的电子表格服务了。效果很好。

【讨论】:

    猜你喜欢
    • 2015-08-16
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多