2013-08-13 20 views
6

Potrzebuję strony HTML, aby uzyskać dostęp do plików z Dysku Google za pomocą XMLHttpRequest (XHR) w JavaScript bez uwierzytelniania (aby moi użytkownicy nie musieli być zalogowani lub mieć konta Google). Te pliki mają uprawnienia "Każdy mający link". Ponieważ te pliki są otwarte dla świata (posiadającego link), nie widzę powodu, dla którego byłoby problem z umożliwieniem im współdzielenia zasobów (CORS).Jak uzyskać dostęp do publicznego pliku Dysku Google przez XHR (CORS) bez uwierzytelniania?

Numer downloadUrl wymaga uwierzytelnienia, więc domyślam się, że nie jest to realna opcja. Przyjrzałem się także webViewLink, która, jak sądzę, wymaga, aby pliki były "publiczne w sieci" - jak się wydaje w wyszukiwarkach itp. Nie jest to również opłacalna opcja dla mnie. Potrzebuję uprawnień "Każdy z linkiem" do tych plików. Najbardziej obiecującym łączem jest webContentLink, który zgodnie z http://googleappsdeveloper.blogspot.se/2012/08/5-things-you-didnt-know-you-could-do.html umożliwia publiczny i nieuwierzytelniony dostęp.

Problem jaki mam z webContentLink jest taki, że nie wygląda na przyjazny dla CORS. Moje próby z XHR w Chrome kończą się niepowodzeniem (całkiem cicho). Nie dodaję żadnych nagłówków.

Moje próby z curl przy użyciu --header "Origin: http://www.hello.se" i zarówno z jak i bez --header "Access-Control-Request-Method: GET" skutkują przekierowaniem na adres URL o krótkim okresie trwałości. Problem polega na tym, że odpowiedź przekierowania nie ma znaków nagłówka, który jest potrzebny do włączenia CORS.

Czy jest coś, co mogę zrobić inaczej, aby to zadziałało?

W przeciwnym razie zespół Google SDK, czy możesz sprawić, że będzie on przyjazny dla publicznych plików (które nie wymagają uwierzytelniania plików cookie), proszę?

+0

* "(...) W przeciwnym razie zespół Google SDK, można dokonać (...)" * nie byłbym zaskoczony, gdyby odpowiedziałem na to pytanie, ale myślę, że spodziewanie się, że zrobią to tutaj, jest całkiem założeniem. Twoja sugestia będzie prawdopodobnie słyszana przez nich, jeśli przekażesz ją za pośrednictwem własnych kanałów Google. – Renan

+0

@Renan Widziałem, jak programiści z Google reagują i rozwiązują problemy związane z SO. Więc nie jest to niemożliwe :) – idbehold

+0

@Renan Patrząc na https://developers.google.com/drive/support, wydaje mi się, że jestem we właściwym miejscu. – Anders

Odpowiedz

0

Możesz spróbować użyć klienta Google API JS. Obejmuje ograniczenie CORS, pobierając element iframe serwera proxy.

1

JSONP wydaje się być jedynym sposobem na dynamicznie pobrać arkusze Google z klientem:

1) na Dysku Google, publikowania w internecie na dokument & opcje udostępniania zestaw Udostępnienie

2) wyeksportować dane w formacie JSON z łączem typu JSON, będzie wyglądać następująco: "http://spreadsheets.google.com/feeds/list/YOUR_FILE_ID/od6/public/values?alt=json&callback=myCallback". Musisz dodać & callback = myCallback, aby użyć JSONP. Możesz użyć jQuery do wywołania JSONP.

3) Definiowanie funkcji window.myCallback JS wykorzystać dane

Powiązane problemy