我一直在尝试使用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"
}
答案 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)
我个人试图添加权限的文档已变得无效。这对于其他人也可能是个问题。