2012-08-31 10 views
5

मेरे पास एक क्लाइंट है जो स्काईडाइव को किसी वेब साइट के क्लाउड स्टोरेज के रूप में उपयोग करना चाहता है। यह वेबसाइट नहीं साइट के उपयोगकर्ता को उनके स्काईडाइव खाते के लिए उनकी फाइलें दिखाने के लिए कह रही है, बल्कि वेबसाइट के मालिक SkyDrive में कुछ फाइलें संग्रहीत करेंगे और उन्हें अपनी साइट पर लॉग इन करने वाले उपयोगकर्ताओं के साथ साझा करना चाहते हैं । मेरा सवाल यह है कि, मैं स्काईडाइव एपीआई को सीधे वेबसाइट के बैक एंड PHP कोड से क्रेडेंशियल्स कैसे भेज सकता हूं?आप एक स्काइडाइडिव खाते को कैसे प्रमाणित करते हैं और उपयोगकर्ता को प्रमाण-पत्र के लिए नहीं पूछते हैं?

लाइव कनेक्ट पर एपीआई दस्तावेज़ (http://msdn.microsoft.com/en-us/library/live/hh243647.aspx) उपयोगकर्ता को उपयोगकर्ता के प्रमाण-पत्र को सेवा में भेजने के लिए लॉग इन फॉर्म के साथ प्रस्तुत करने पर ध्यान केंद्रित करने लगते हैं। फिर, यह वही नहीं है जो मैं चाहता हूं। वेबसाइट के उपयोगकर्ता को कुछ भी करने की ज़रूरत नहीं है, लेकिन पेज पर जाएं और वे SkyDrive खाते से प्रतिबिंबित फ़ाइलों को देखेंगे। क्रेडेंशियल्स को सर्वर पर संग्रहीत किया जाना चाहिए और जब उपयोगकर्ता पृष्ठ का अनुरोध करता है तो भेजा जाता है।

मैंने Google डॉक्स (How do I connect to the Google Calendar API without the oAuth authentication?) के बारे में इस तरह के एक प्रश्न पूछा। उस प्रश्न का उत्तर रीफ्रेश टोकन प्राप्त करने के लिए एक अस्थायी स्क्रिप्ट सेट करना था जिसे प्रमाणित करने के लिए बार-बार उपयोग किया जा सकता था। मैंने कोशिश की और यह काम किया। हालांकि, मुझे यकीन है कि रीफ्रेश टोकन कितना समय तक चलता है और यदि वह विधि स्काईडाइव एपीआई के साथ काम करेगी।

संपादित करें: कुछ और अधिक शोध करने के बाद, लाइव कनेक्ट डॉक्स (http://msdn.microsoft.com/en-us/library/live/hh826540) कहते हैं: एक उपयोगकर्ता

के बाद सहमति प्रदान करता है, लाइव कनेक्ट अपने अनुप्रयोग एक विशेष कोड देता है, या पहुँच टोकन, जो आपके की सुविधा देता है ऐप उस उपयोगकर्ता की जानकारी के उस हिस्से के साथ काम करता है जिस पर उसने सहमति व्यक्त की थी। आम तौर पर, यह एक्सेस टोकन लगभग एक घंटे के लिए अच्छा है। इस घंटे के बाद, आपका ऐप अब उपयोगकर्ता की जानकारी के साथ काम करने में सक्षम नहीं होगा-इसे उपयोगकर्ता को साइन-इन और सहमति प्रक्रिया के माध्यम से फिर से जाने के लिए कहना चाहिए। इसके आस-पास पहुंचने के लिए, आप उपयोगकर्ता को wl.offline_access स्कोप से सहमति देने के लिए कह सकते हैं। यह आपके ऐप को एक अतिरिक्त कोड देता है, जिसे रीफ्रेश टोकन कहा जाता है, जब भी आपका ऐप किसी भी समय की आवश्यकता होने पर एक नया एक्सेस टोकन प्राप्त करने के लिए उपयोग कर सकता है-उपयोगकर्ता के संकेतों के बाद-आम तौर पर, एक साल तक। हालांकि, उपयोगकर्ता किसी भी समय आपके ऐप की पहुंच को निरस्त कर सकता है। यदि कोई उपयोगकर्ता आपके ऐप पर सहमति रद्द करने का विकल्प चुनता है, तो कोई भी एक्सेस एक्सेस टोकन या रीफ्रेश टोकन काम नहीं करेगा-आपके ऐप को उपयोगकर्ता को एक बार फिर साइन-इन और सहमति प्रक्रिया के माध्यम से जाने के लिए कहा जाना चाहिए।

तो ऐसा लगता है कि रीफ्रेश टोकन एक वर्ष तक चलता रहता है। इसका मतलब है कि मैं रीफ्रेश टोकन प्राप्त करने के लिए कुछ छीन सकता हूं, स्टोर करता हूं, और प्रत्येक पृष्ठ अनुरोध पर, एक्सेस टोकन प्राप्त करने और डेटा प्रदर्शित करने के लिए रीफ्रेश टोकन का उपयोग करता हूं। हालांकि, साल में एक बार मुझे इस क्लाइंट के लिए ताज़ा टोकन अपडेट करना होगा और उसे स्टोर करना होगा। क्या यह सही लगता है और क्या यह करने का सबसे अच्छा तरीका है?

+0

मुझे लगता है कि उनका एफबी एंट की तरह है? यह सिर्फ आगे बढ़ता है, अगर आप टोकन स्टोर करते हैं तो इसे लंबे समय तक काम करना चाहिए। आपको कम से कम एक बार उपयोगकर्ता को अपना लॉगिन पेज दिखाना होगा, आप इसे अनधिकृत नहीं कर सकते हैं, इसलिए उदाहरण आपको दिखाता है। – Sammaye

+0

@ सैमाये जहां तक ​​मैं कह सकता हूं, वह नहीं चाहता कि आगंतुक को स्काइडाइडिव में लॉगिन करना पड़े, लेकिन एक खाते के साथ लॉगिन करें कि साइट के मालिक फाइलों को साझा करने के लिए उस खाते से जुड़े फाइलों को सेट और सूचीबद्ध करते हैं। इसलिए अपनी साइट पर स्काईड्राइव खाते से फ़ाइलों को सूचीबद्ध/साझा करें, उनकी साइट के साथ प्रमाण-पत्र की आपूर्ति करें। –

+0

@ जोनाथन कुह्न हम्म हां इसे इस तरह पढ़ा जा सकता है, उसे – Sammaye

उत्तर

1

ओएथ 2 के लिए बिल्कुल एक विशेष प्रवाह है, जिसे Client Credentials Grant कहा जाता है।

गूगल पहले से ही इस लागू करता लेखा सेवा के साथ और क्लाइंट प्रमाण पत्र, के रूप में अपने अन्य प्रश्न के this answer में उल्लेख किया गया था।

हालांकि, माइक्रोसॉफ्ट अब तक करता नहींimplement that flow, इसलिए इस समय अपने सबसे अच्छा तरीका है वैकल्पिक हल आप पहले से ही गूगल डॉक्स के लिए उपयोग कर रहे हैं का उपयोग करें।

+0

उत्तर के लिए धन्यवाद। ऐसा लगता है कि स्काईडाइव के लिए वर्कअराउंड सबसे अच्छा विकल्प है। हालांकि, अगर रीफ्रेश टोकन की समयसीमा समाप्त हो जाती है तो उसे फिर से करना होगा, भले ही यह साल में एक बार हो। –

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