2014-11-05 18 views
5

Próbowałem użyć interfejsu API Dysku Google, aby udostępnić publicznie aplikację FusionTable i nie udało się jej uruchomić. Mogę używać OAuth 2.0 Playground do wstawiania publicznych uprawnień do udziału w innych dokumentach na Dysku Google, ale w przypadku Fusiontables otrzymuję błąd HTTP 500 "Błąd wewnętrzny". Zauważ, że próbowałem uwzględnić każdy zakres dostępny pod "Drive API v2" i "Fusion Tables API v1".Wywołanie interfejsu API Dysk Google w celu wstawienia uprawnień udziału publicznego na Fusiontables powoduje błąd wewnętrzny

Mam świadomość, że Google nie tworzy i nie obsługuje FusionTables, ale zastanawiam się, czy ktoś znalazł obejście, które pozwala im obejść ten problem? Nie próbowałem też starszych wersji/przestarzałych wersji API.

Oto rzeczywisty format żądania interfejsu API i odpowiedzi od obiektu OAuth Playground dla wstawki uprawnień FusionTable (HTTP 500), a następnie karta uprawnień do dokumentu Doc (HTTP 200). Jedyną różnicą pomiędzy żądaniami jest fusiontable_id lub DOCUMENT_ID w żądaniu URI:

Zapytanie:

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 Odpowiedź: Odpowiedź

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" 
     } 
    ] 
    } 
} 

Doc: Komunikat ten

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

Dla wyjaśnienia: „Google nie jest już rozwój i wspieranie Fusiontables” Nie jest to przypadek, i byłbym ciekawy w słuch gdzie że pomysł wyszedł od :-) Jeśli wyślesz to pytanie na adres [email protected] z rzeczywistym identyfikatorem dokumentu Fusion Tables, możemy przejrzeć nasze dzienniki, aby dowiedzieć się, jaki może być problem. –

+0

Dzięki Rod, postąpię zgodnie z sugestią. Myślałem, że rozwój Fusion Tables został zatrzymany, ponieważ grupa [Fusion Tables API Users Group] (https://groups.google.com/forum/#!forum/fusion-tables-users-group) nie jest już monitorowana, a ponieważ [ problem z ponownym ładowaniem Arkuszy kalkulacyjnych Google] (https://code.google.com/p/fusion-tables/issues/detail?id=675&q=import%20fails&colspec=ID%20Type%20Status%20Summary%20Stars%20Component) wydaje się wystarczająco duży i na tyle ważne, że zostałoby to naprawione, gdyby wciąż rozwijano Tabele Fuzji. –

+0

Prawdopodobnie powinienem przerobić tam słownictwo "nie być monitorowanym", aby wyjaśnić, że FT jest aktywne, ale nie na tej liście.Jeśli chodzi o importowanie arkusza kalkulacyjnego, wystąpił ogólny problem ze wszystkimi aplikacjami Dysku w tym okresie, które miałyby te same objawy, ale nie tę samą przyczynę. Import arkuszy kalkulacyjnych jest obecnie stabilny. –

Odpowiedz

3

być skutkiem błędu w Drive API. Zlokalizowałem błąd wewnętrzny i zgłosiłem problem z zespołem inżynierów. W tej chwili nie ma znanych rozwiązań.

+2

Czy po kilku miesiącach nadal występuje błąd wewnętrzny? A teraz, gdy oparty na XML interfejs API GData został wyłączony, rzeczywiście nie ma żadnego obejścia ... – Arseniy

0

Jeśli nie ma problemu z tymczasowym obejściem problemu, wstawienie publicznej tablicy udostępniania Fusion Table nadal działa ze starszym opartym na XML interfejsem API GData. Możesz to sprawdzić: here, ale uwaga na czerwony baner u góry strony: "Okres wycofania wersji 3 interfejsu API Dokumentów Google jest już prawie na końcu. 20 kwietnia 2015 r. Przestaniemy świadczyć usługi dla tego interfejsu API. "

Więc jeśli trzeba obejść ten problem teraz, że będzie utrzymywać was będzie do kwietnia, a następnie Miejmy nadzieję bug Napęd API zostanie ustalona wcześniej ...

+0

Dobra, spróbuję, dzięki! –

+1

Dodałem obejście do jednego z moich projektów GitHub, aby można było spojrzeć na kod: http://goo.gl/NDxHIr Metoda w linii 165, to Objective-C, chociaż większość z nich jest po prostu kształtowana żądanie POST, które powinno być łatwe do odczytania. – Arseniy

2

Mam dobrą wiadomość!

Otrzymałem wiadomość e-mail od firmy googletables-feedback. Mówią, że teraz powinno działać.

Mój kod na Google Client JS API działa dobrze

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

Nie używam interfejsu API JS klienta Google, ale potwierdziłem, że mogę teraz zautomatyzować publikowanie FusionTable jako publicznego. Dzięki! –