2013-08-13 4 views
6

मुझे प्रमाणीकरण के बिना जावास्क्रिप्ट में XMLHttpRequest (XHR) के साथ Google ड्राइव फ़ाइलों तक पहुंचने के लिए एक HTML पृष्ठ की आवश्यकता है (इसलिए मेरे उपयोगकर्ताओं को Google खाते में साइन इन होना आवश्यक नहीं है)। इन फ़ाइलों को "लिंक वाला कोई भी व्यक्ति" अनुमति है। चूंकि ये फ़ाइलें दुनिया के लिए खुली हैं (लिंक होने के कारण) मुझे नहीं पता कि उनके लिए क्रॉस-मूल संसाधन साझाकरण (सीओआरएस) को अनुमति देने में समस्या क्यों होगी।प्रमाणीकरण के बिना XHR (CORS) द्वारा सार्वजनिक Google ड्राइव फ़ाइल को मैं कैसे एक्सेस कर सकता हूं?

downloadUrl प्रमाणीकरण की आवश्यकता है, इसलिए मुझे लगता है कि यह एक व्यवहार्य विकल्प नहीं है। मैंने webViewLink पर भी देखा है, जो मुझे लगता है कि फ़ाइलों को "वेब पर सार्वजनिक" होने की आवश्यकता है - खोज इंजन में बदलना, मुझे लगता है। मेरे लिए भी एक व्यवहार्य विकल्प नहीं है। मुझे इन फ़ाइलों के लिए "लिंक वाला कोई भी व्यक्ति" अनुमति चाहिए। सबसे आशाजनक लिंक webContentLink है, जो http://googleappsdeveloper.blogspot.se/2012/08/5-things-you-didnt-know-you-could-do.html के अनुसार सार्वजनिक और अनधिकृत पहुंच की अनुमति देता है।

मेरे पास webContentLink के साथ समस्या यह है कि यह कॉरस मित्रवत प्रतीत नहीं होता है। क्रोम में एक्सएचआर के साथ मेरे प्रयास विफल (काफी चुपचाप)। मैं कोई हेडर नहीं जोड़ता हूं।

curl--header "Origin: http://www.hello.se" और दोनों का उपयोग कर के साथ या बिना --header "Access-Control-Request-Method: GET" परिणाम एक HTTP/1.1 302 Moved Temporarily में साथ मेरा प्रयास एक अल्पकालिक सामग्री URL पर रीडायरेक्ट। समस्या यह है कि रीडायरेक्ट प्रतिक्रिया में Access-Control-Allow-Origin शीर्षलेख का कोई संकेत नहीं है, जिसे CORS को सक्षम करने के लिए आवश्यक है।

क्या ऐसा कुछ है जो मैं काम करने के लिए अलग-अलग कर सकता हूं?

अन्यथा Google एसडीके टीम, क्या आप सार्वजनिक फ़ाइलों (जिन्हें कुकी प्रमाणीकरण की आवश्यकता नहीं है) के लिए webContentLink सीओआरएस अनुकूल बना सकते हैं?

+0

* उपयोग करने के लिए एक window.myCallback जे एस समारोह को परिभाषित करें "(...) नहीं तो गूगल एसडीके टीम, आप कर सकते हैं (...)" * मैं नहीं आश्चर्य है अगर वे किया जाएगा सवाल का जवाब दिया, लेकिन मुझे लगता है कि उन्हें ऐसा करने की उम्मीद है कि यह काफी धारणा है। यदि आप Google के अपने चैनलों के माध्यम से इसे संवाद करते हैं तो आपका सुझाव शायद उनके द्वारा सुना जाएगा। – Renan

+0

@ रेनान मैंने Google से डेवलपर्स को देखा है कि पहले एसओ पर लाए गए मुद्दों का जवाब दें और उन्हें ठीक करें। तो यह असंभव नहीं है :) – idbehold

+0

@Renan https://developers.google.com/drive/support पर देख रहे हैं, मुझे सही जगह पर लग रहा है। – Anders

उत्तर

0

आप जेएस Google एपीआई क्लाइंट का उपयोग करने का प्रयास कर सकते हैं। यह प्रॉक्सी iframe डाउनलोड करके CORS प्रतिबंध के आसपास हो जाता है।

1

JSONP एक ही तरीका है गतिशील रूप से ग्राहक से Google शीट लाने के लिए हो रहा है:,

1) Google डिस्क में

2 लोक

करने के लिए दस्तावेज़ & सेट साझा करने के विकल्प को वेब पर प्रकाशित करें) निर्यात करें अपने जेएसओएन प्रारूप में जेएसओएन प्रारूप में डेटा, यह इस तरह दिखेगा: " http://spreadsheets.google.com/feeds/list/YOUR_FILE_ID/od6/public/values?alt=json&callback=myCallback"। आपको JSONP का उपयोग करने के लिए & कॉलबैक = myCallback को जोड़ने की आवश्यकता है। आप अपने JSONP कॉल करने के लिए jQuery का उपयोग कर सकते हैं।

3) डेटा

संबंधित मुद्दे