2011-09-09 17 views
11

हम दस्तावेज़ बनाने के लिए Google डॉक एपीआई का उपयोग करना चाहते हैं (हमारे अपने व्यवसाय खाते में) जब हमारे अंतिम उपयोगकर्ता हमारी साइट पर कुछ कार्य करते हैं।Google API: बिना पुनर्निर्देशन के प्रमाणीकरण कैसे करें?

समस्या यह है कि हमने vA.0 2.0 प्रोटोकॉल दस्तावेज़ में सुझाए गए ओएथ 2.0 प्रोटोकॉल को लागू करने का प्रयास किया है। ApiClient :: प्रमाणीकरण विधि एक पुनर्निर्देशन करते हैं। यह एक बड़ी समस्या है क्योंकि हमारे उपयोगकर्ता हमारे अपने व्यवसाय खाते तक पहुंच नहीं जानते हैं .... और हम उन्हें वैसे भी एक्सेस नहीं देना चाहते हैं;)

(दूसरे शब्दों में, हम नहीं बना रहे हैं एक ऐसा एप्लिकेशन जो हमारे उपयोगकर्ताओं को अपना डेटा संपादित करने की अनुमति देता है, लेकिन डेटाबेस जैसे हमारे डेटा के साथ बातचीत करने की अनुमति देता है।)

मैंने पढ़ा है कि OAuth 2.0 का बिंदु यह बचना था कि हम अपने उपयोगकर्ताओं के प्रमाण पत्र का प्रबंधन करते हैं। मैं व्यक्तिगत रूप से ओ.के. अवधारणा के साथ, लेकिन हमारे मामले में, हम अपने उपयोगकर्ताओं के Google खाते में प्रमाणित नहीं होना चाहते हैं ...

तो, अंत से किसी भी बातचीत के बिना वैध प्रमाणीकरण प्राप्त करने का सबसे अच्छा तरीका क्या होगा उपयोगकर्ता?

+2

आकस्मिक पाठक को। इससे पहले कि आप इस के साथ शामिल हो रही शुरू करते हैं। वैकल्पिक और आवेदन में अपने Gmail उपयोगकर्ता नाम और पासवर्ड हार्डकोड और PHP के लिए Chrome को पोर्ट कि उपयोगकर्ता लॉगिन का अनुकरण करने की कम दर्दनाक कार्यान्वयन पर विचार करें।अब एक एनएसएपीआई-अनुरूप प्लगइन आर्किटेक्चर और वर्चुअल मशीन को फिर से लिखना मजेदार नहीं होगा, लेकिन कम से कम यह OAuth2 से बेहतर है, अगर आपने पढ़ा नहीं है तो लेखक http://hueniverse.com/2012/07/oauth-2 का उपयोग न करने की सिफारिश करता है -0-और-द-रोड-टू-नरक/ –

उत्तर

16

आप जो वर्णन करते हैं वह यह नहीं है कि कैसे 3-पैर वाले ओएथ का उपयोग करने के लिए डिज़ाइन किया गया था।

3-पैर वाले ओएथ प्रमाणीकरण प्रतिनिधि हैं जहां एक उपयोगकर्ता (जो अपना पासवर्ड जानता है) आवेदन के लिए सीमित और निरस्त करने योग्य संसाधन पहुंच प्रदान कर सकता है। वह एप्लिकेशन उपयोगकर्ता के पासवर्ड को कभी नहीं देखता है। उपयोगकर्ता को प्रतिरूपण करने के लिए एप्लिकेशन को सुरक्षित रूप से अनुमति देने के लिए काम का एक गुच्छा शामिल है।

क्या आप शायद चाहते हैं (2 टांगों वाला) OAuth प्रवाह, जहां consumer_id/consumer_secret साख अपने आवेदन में एम्बेडेड रहे हैं उपयोग करने के लिए है। यहां आपका एप्लिकेशन आपके अंतिम उपयोगकर्ता का प्रतिरूपण नहीं कर रहा है और इसमें कोई ब्राउज़र पुनर्निर्देशन शामिल नहीं होगा।

यहाँ Google Apps में 2-चरणीय OAuth का उपयोग करने पर कुछ और जानकारी है: http://googleappsdeveloper.blogspot.com/2011/07/using-2-legged-oauth-with-google-tasks.html

और यह 3 बनाम 2- चरणीय OAuth का अच्छा वर्णन है: http://cakebaker.42dh.com/2011/01/10/2-legged-vs-3-legged-oauth/

+1

दोनों लिंक oauth1 हैं, और यह OAuth2 में नहीं कहा जाता है। OAuth2 में इसे "क्लाइंट क्रेडेंशियल्स" कहा जाता है: http://tools.ietf.org/html/rfc6749#section-1.3.4 – drozzy

1

क्यों नहीं अपने व्यापार खाते के लिए एक ओथ प्राधिकरण प्राप्त करें और सभी उपयोगकर्ता उस खाते का उपयोग करें। चूंकि ऐसा लगता है कि आप चाहते हैं कि प्रत्येक व्यक्ति एक खाते के लिए डेटा तक पहुंच सके, विवरण अंतिम उपयोगकर्ता से छुपाया जा सकता है।

पहुँच टोकन सभी उपयोगकर्ताओं द्वारा साझा किया जाएगा और वे सभी प्रत्येक उपयोगकर्ता के स्वयं के खाते के लिए किसी भी प्राधिकरण के बिना एक ही खाते वापस अंत पर मारते थे।

+1

वह ध्वनि जो मुझे चाहिए, लेकिन क्या ओएथ का लक्ष्य प्रमाणीकरण को संसाधित करने के लिए रीडायरेक्ट करना है? एंड्यूसर से बचने के लिए प्रमाणीकरण करने के लिए मैं क्रेडेंशियल को "हार्डकोड" कैसे कर सकता हूं? – FMaz008

+0

आप सिस्टम का उपयोग कर किसी और से पहले प्रमाणीकरण करते हैं। फिर आप सभी के द्वारा उपयोग के लिए टोकन स्टोर करते हैं। इसे देखो जैसे सभी उपयोगकर्ता अपने टोकन वाले प्रत्येक के बजाय एक ही टोकन साझा कर रहे हैं। –

+0

हम, ठीक है, लेकिन वह अभी भी मेरी मदद नहीं करता है। मैंने प्रोटोकॉल को लागू करने का प्रयास किया है, और अब सभी उपयोगकर्ताओं को एक पृष्ठ पर रीडायरेक्ट किया गया है जहां लिखा गया है: *** वेबसाइट इस पर अनुमति का अनुरोध कर रही है: अपने दस्तावेज़ों को प्रबंधित करें Google दस्तावेज़ में अपने दस्तावेज़ देखें और प्रबंधित करें नए दस्तावेज़ अपलोड करें (और जानकारी)। *** मैं नहीं चाहता कि मेरा उपयोगकर्ता यह देख सके ... – FMaz008

3

आप का उपयोग करने की आवश्यकता होगी एक सेवा खाता। असल में आप इस सर्वर पर अपने सर्वर एप्लिकेशन में हार्ड कोडिंग पहुंच कर रहे हैं। फिर आप अपनी इच्छित सामग्री के लिए खाते तक पहुंच प्रदान करने के लिए साझाकरण का उपयोग करते हैं। उदाहरण के लिए आप SERVICE ACCOUNT के साथ Google डॉक या Analytics प्रोफ़ाइल साझा कर सकते हैं।

यहाँ एक सेवा खाते को स्थापित लॉगिन करने के बाद और फिर इसे का उपयोग करने का एक पूरा उदाहरण दिया गया है।

https://gist.github.com/fulldecent/6728257

+0

हां, तो समीक्षक। यह तीसरी बार है जब मैंने इस लिंक को एक उत्तर में पोस्ट किया है। और हाँ, यह एक वैध जवाब है। अन्य प्रश्न http://stackoverflow.com/questions/9932090/google-analytics-api-v3- प्राधिकरण-to-allow-access-to-my-data/19121069#19121069 और http://stackoverflow.com/questions हैं/13111396/पहुँच-google-कैलेंडर घटनाओं-से-साथ-सेवा-खाता-त्रुटि पहुँच-मांद –

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