2014-11-05 67 views
5

我一直在嘗試使用谷歌驅動器API來使Fusiontable公開可讀,並且一直無法讓它工作。我可以使用OAuth 2.0 Playground爲其他Google Drive文檔插入公共共享權限,但對於Fusiontables,我收到HTTP 500錯誤「內部錯誤」。請注意,我已嘗試包括「Drive API v2」和「Fusion Tables API v1」下的所有範圍。谷歌雲端硬盤API調用插入公共共享權限導致內部錯誤

我知道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響應:

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" 
} 
+1

澄清:「谷歌不再開發和支持Fusiontables」不是這樣的,而這種想法是從哪裏來的我會聽取有趣:-)如果您使用實際的Fusion Tables文檔ID將此問題發送到[email protected],我們可以查看我們的日誌以找出問題所在。 – 2014-11-05 19:57:30

+0

謝謝Rod,我會按照你的建議跟進。我認爲Fusion Tables開發已停止,因爲[Fusion Tables API用戶組](https://groups.google.com/forum/#!forum/fusion-tables-users-group)不再受到監控,並且[問題重新加載谷歌電子表格](https://code.google.com/p/fusion-tables/issues/detail?id=675&q=import%20fails&colspec=ID%20Type%20Status%20Summary%20Stars%20Component)似乎已經夠老了並且足夠重要,以至於如果Fusion Tables仍在開發中,它將會得到修復。 – 2014-11-06 16:17:43

+0

我應該重新說明那裏的「沒有被監控」的言論,以澄清金融時報活躍,只是不在該名單上。至於電子表格導入的事情,在那段時間所有的Drive應用程序都有一個普遍的問題,它們會有相同的症狀,但不是同一個原因。電子表格導入現在是穩定的。 – 2014-11-06 22:50:14

回答

3

這似乎這是由於Drive API中的錯誤造成的。我找到了內部錯誤,並且向工程團隊提出了這個問題。目前還沒有已知的解決方法。

+2

幾個月後,看起來內部錯誤仍然存​​在?現在基於XML的GData API已經關閉,似乎確實沒有解決方法... – Arseniy 2015-04-22 13:01:34

0

如果您只需臨時解決方法,插入Fusion Table公共共享權限仍然適用於較早的基於XML的GData API。您可以查看here,但請注意頁面頂部的紅色橫幅,告知「Google文檔列表API第3版的棄用期已接近尾聲。 2015年4月20日,我們將停止爲此API提供服務。「

所以如果你需要現在要解決的問題,這將讓你去到4月,然後讓我們希望驅動器API漏洞前,爲得到固定......

+0

好的,我會試試這個,謝謝! – 2014-12-30 16:43:36

+1

我將解決方法添加到了我的一個GitHub項目,因此您可以查看該代碼:http://goo.gl/NDxHIr 165行的方法,它是Objective-C,儘管它大部分只是塑造一個應該易於閱讀的POST請求。 – Arseniy 2014-12-31 06:39:06

2

我有一個好消息!

我收到了googletables反饋的電子郵件。他們說現在應該開始工作。

我在谷歌的客戶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

我沒有使用Google Client JS API,但我確認我現在可以自動將FusionTable公開。謝謝! – 2015-05-18 16:00:23