用于在Fusiontables上插入公共共享权限的Google Drive API调用会导致内部错误

时间:2014-11-05 15:44:29

标签: google-drive-api google-fusion-tables

我一直在尝试使用Google Drive API使Fusiontable公开可读,并且无法让它工作。我可以使用OAuth 2.0 Playground为其他Google云端硬盘文档插入公共共享权限,但对于Fusiontables,我收到HTTP 500错误,"内部错误"。请注意,我已尝试将所有可用范围包含在" Drive API v2"和" Fusion Tables API v1"。

我知道Google已经不再开发和支持Fusiontables了,但我想知道是否有人找到了允许他们解决这个问题的解决方法?我还没有尝试过遗留/弃用版本的API。

以下是实际的API请求格式以及OAuth Playground对Fusiontable权限插入(HTTP 500)的响应,然后是Doc权限插入(HTTP 200)。请求之间的唯一区别是请求URI中的fusiontable_id或document_id:

请求:

POST /drive/v2/files/<fusiontable_id or document_id>/permissions HTTP/1.1
Host: www.googleapis.com
Content-length: 33
Content-type: application/json
Authorization: Bearer <access_token>

{"role":"reader","type":"anyone"}

Fusiontable Response:

HTTP/1.1 500 Internal Server Error
Content-length: 180
X-xss-protection: 1; mode=block
X-content-type-options: nosniff
Expires: Tue, 04 Nov 2014 23:51:58 GMT
Vary: Origin,Referer,X-Origin
Server: GSE
Cache-control: private, max-age=0
Date: Tue, 04 Nov 2014 23:51:58 GMT
X-frame-options: SAMEORIGIN
Content-type: application/json; charset=UTF-8
{
  "error": {
    "code": 500, 
    "message": "Internal Error", 
    "errors": [
      {
        "domain": "global", 
        "message": "Internal Error", 
        "reason": "internalError"
      }
    ]
  }
}

文件回复:

HTTP/1.1 200 OK
Content-length: 281
X-xss-protection: 1; mode=block
X-content-type-options: nosniff
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Vary: Origin,Referer,X-Origin
Server: GSE
Etag: "M4l5RvCt2StP2jOGfgyJPGdTZTc/dgFZz37LrQjIXplUkmnh3VtemzQ"
Pragma: no-cache
Cache-control: no-cache, no-store, max-age=0, must-revalidate
Date: Wed, 05 Nov 2014 15:35:56 GMT
X-frame-options: SAMEORIGIN
Content-type: application/json; charset=UTF-8
{
  "kind": "drive#permission", 
  "etag": "\"M4l5RvCt2StP2jOGfgyJPGdTZTc/dgFZz37LrQjIXplUkmnh3VtemzQ\"", 
  "role": "reader", 
  "type": "anyone", 
  "id": "anyone", 
  "selfLink": "https://www.googleapis.com/drive/v2/files/<document_id>/permissions/anyone"
}

4 个答案:

答案 0 :(得分:3)

这似乎是由于Drive API中的错误造成的。我找到了内部错误,并向工程团队提出了问题。目前还没有已知的解决方法。

答案 1 :(得分:2)

我有一个好消息!

我收到了来自googletables-feedback的电子邮件。他们说它应该现在正在运作。

我在Google Client JS API上的代码工作正常

var setAccess = function setAccessF() {
    gapi.client.request({
        path : '/drive/v2/files/{fileID}/permissions',
        method : 'post',
        body : {
            'value' : 'anyone',
            'type' : 'anyone',
            'role' : 'reader'
        }
    }).then(opt_onFulfilled, opt_onRejected);
}

function opt_onRejected(e) {
    console.log(e)
}

function opt_onFulfilled(e) {
    console.log(e)
}

答案 2 :(得分:0)

如果您对临时解决方法没问题,插入Fusion Table公共共享权限仍然适用于较旧的基于XML的GData API。您可以查看here,但请注意页面顶部的红色横幅说'Google文档列表API第3版的弃用期即将结束。 2015年4月20日,我们将停止此API的服务。'

因此,如果您现在需要解决问题,这将让您持续到4月,然后让我们希望在此之前修复Drive API错误...

答案 3 :(得分:0)

我个人试图添加权限的文档已变得无效。这对于其他人也可能是个问题。