2012-07-04 26 views
8

मेरे पास एक एकल पृष्ठ ऐप है जो ड्रॉपबॉक्स और लिंक्डइन जैसी अन्य सेवाओं के साथ एकीकृत करता है। उदाहरण के लिए, ड्रॉपबॉक्स में बहुत अच्छा एपीआई है और मुझे दूसरी विंडो में ड्रॉपबॉक्स के प्रमाणीकरण लिंक को खोलकर प्रमाणीकरण मिल रहा है। एक बार जब उपयोगकर्ता प्रमाणीकृत हो जाता है, तो मैं उनसे अपनी नई विंडो को बंद करने के लिए कहता हूं।एक नई विंडो खोलने के बिना एक पेज एप में ड्रॉपबॉक्स प्रमाणीकरण कैसे करें?

स्पष्ट रूप से यह उप-शीर्ष है क्योंकि यह उपयोगकर्ता को मेरे ऐप से दूर ले जाता है, और टैबलेट पर और भी बोझिल होता है।

मैं ऐप के भीतर प्रमाणीकरण कैसे करूं, जैसे कि लाइटबॉक्स या मोडल फॉर्म में?

ध्यान दें कि एकीकरण स्वयं सर्वर-पक्ष क्लाइंट पक्ष नहीं होता है। वर्तमान में, ड्रॉपबॉक्स प्रमाणीकरण पृष्ठ में एक कॉल बैक पेज है जो मेरे सर्वर से संकेत करता है कि प्रमाणीकरण सफल था, जिसे मैं उपयोगकर्ता के तालिका में भविष्य में उपयोग के लिए डेटाबेस में संग्रहीत करता हूं।

नोट: इनाम टिप्पणी पढ़ना चाहिए: एक कोड नमूना अत्यधिक वांछित है लेकिन की आवश्यकता नहीं।

+0

क्या आप स्पष्ट कर सकते हैं कि आपका ऐप कहां काम करता है, यानी यह एक ऐसा वेब ऐप है जिसे उपयोगकर्ता अपने ब्राउज़र में एक्सेस करता है, क्या यह मूल ऐप/प्लेटफॉर्म इत्यादि है? – Greg

+0

यह बैकबोन और दोस्तों पर बनाया गया एक वेब ऐप है, और फोनगैप का उपयोग कर मोबाइल पर डाउनलोड के लिए भी उपलब्ध कराया जाएगा। मैं फोनगैप के साथ ड्रॉपबॉक्स एसडीके का उपयोग करने में सक्षम हो सकता हूं, इसलिए यह प्रश्न इन-ब्राउज़र वेब-ऐप पर केंद्रित है। त्वरित स्पष्टीकरण के लिए –

+0

धन्यवाद! मैंने अपना जवाब पोस्ट कर दिया है, अगर मुझे गलत समझा जाता है तो मुझे बताएं :-) – Greg

उत्तर

11

आप जो प्रस्ताव दे रहे हैं वह सुरक्षा मॉडल को हराने के लिए है, इसलिए यह संभव नहीं होना चाहिए। उपयोगकर्ता सत्यापन के लिए वास्तविक पृष्ठ का यूआरएल देखने में सक्षम होना चाहिए। कल्पना करें कि जब आप पेपैल के साथ भुगतान कर रहे हैं, तो संभव है कि आप अपने महत्वपूर्ण डेटा को सही करने से पहले भुगतान करें कि आप paypal.com पर हैं? यह अन्य सभी ऐप्स पर लागू होता है। यह एक बहुत बदसूरत प्रवाह है, लेकिन आज उद्योग के साथ सबसे अच्छा उद्योग आया है।

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

जो काम आप चाहते हैं वह काम करेगा जो एक ऐप है जो तीसरे पक्ष की सेवा के लिए उपयोगकर्ता का नाम और पासवर्ड मांगता है, फिर दृश्यों के पीछे खुद को नृत्य करता है। यह संभवतः आपके ऐप से उपयोगकर्ताओं को रोक देगा और यह बहुत खतरनाक है। मैं इसकी अनुशंसा नहीं करता हूं।

+1

मैंने त्वरित परीक्षण किया और ड्रॉपबॉक्स को जवाब दिया [x-Frame-Options] (https://developer.mozilla.org/en-US/docs/The_X-FRAME-OPTIONS_response_header) प्रतिक्रिया शीर्षलेख में, iframe दृष्टिकोण बनाना इस मामले में एंड्रियास द्वारा अनुपयोगी द्वारा वर्णित। यह सुनिश्चित नहीं है कि चाइल्ड ब्राउजर फोन ऐप के मामले में काम करेगा या नहीं, लेकिन सामान्य वेबैप्स के लिए उत्तर सही है। धन्यवाद एलेक्स। –

0

यदि आपका ऐप एक वेब ऐप है, तो प्रवाह को व्यवस्थित करने का सबसे अच्छा तरीका वर्तमान पृष्ठ को रीडायरेक्ट करना है (उदाहरण के लिए, How to redirect to another webpage in JavaScript/jQuery?) ड्रॉपबॉक्स पर/अधिकृत पृष्ठ पर, अपने ऐप पर किसी पृष्ठ पर oauth_callback के साथ प्रक्रिया पूरी हो गई थी।

इस तरह प्रवाह बस है:

  1. (जिन पर आपका एप्लिकेशन) उपयोगकर्ता बटन पर क्लिक करता OAuth प्रवाह शुरू करने के लिए
  2. (आपके ऐप्लिकेशन ड्रॉपबॉक्स पर रीडायरेक्ट को अधिकृत पेज) उपयोगकर्ता
  3. (ड्रॉपबॉक्स रीडायरेक्ट अधिकृत करता एप्लिकेशन आपके ऐप पर प्रति औपचारिक रूप से) ऐप को टोकन तक पहुंच जाता है और एकीकरण का उपयोग करने के लिए तैयार है

और यह सब एक ही पृष्ठ के भीतर होता है, बिना अतिरिक्त विंडो बंद/खोलने के।

+0

आपके उत्तर के लिए धन्यवाद। आपका प्रस्तावित समाधान एक खिड़की में सब कुछ रखने के लिए बहुत अच्छा है, लेकिन यह वास्तव में "एकल पृष्ठ" नहीं है। एकल पृष्ठ ऐप्स पृष्ठभूमि में बहुत सारे डेटा, जेएस और एचटीएमएल को रीफ्रेश-कम प्रयोगकर्ता प्रदान करने के लिए लोड करते हैं, यानी, लिंक पर क्लिक पूर्ण पृष्ठ लोड को ट्रिगर नहीं करते हैं बल्कि प्रासंगिक अनुभागों पर केवल पृष्ठ परिवर्तन करते हैं। आपके दृष्टिकोण के साथ, जब व्यक्ति एकल-पेज वेब ऐप रखने के लाभ को हराता है, तो कॉलबैक के माध्यम से ऐप पर वापस आने पर संपूर्ण ऐप डेटा को फिर से लोड करने की आवश्यकता होगी। –

3

आप अपने वेबपृष्ठ पर एक आईफ्रेम में प्रमाणीकरण समापन बिंदु लोड कर सकते हैं। हालांकि, ध्यान दें कि कुछ ब्राउज़रों में आईफ्रेम के भीतर लॉगिन प्रदाता को भेजे गए कुकीज़ पर सीमाएं हैं। आम तौर पर (सफारी, आईओएस) आपने केवल कुकीज तक पहुंच पढ़ी है, जो कि सत्र कुकी पहले से ही प्रदाता पर सेट होने पर पर्याप्त है।

अपने कॉलबैक पेज पर - जहां आपको प्रमाणीकरण के बाद ड्रॉपबॉक्स से वापस भेजा जाता है; आपको मूल पृष्ठ पर किसी ईवेंट को ट्रिगर करने के लिए जावास्क्रिप्ट फ़ंक्शन को कॉल करने की आवश्यकता होगी, प्रमाणीकरण किया जाता है।

window.parent.AppController.authenticationComplete(); 

माता-पिता तो आइफ्रेम हटाने, और के रूप में प्रमाणीकृत आगे बढ़ सकते हैं।

authenticationCompleted = function() { 
    // [snipp] 
    $("iframe#loginwrapper").remove(); 
} 

संभावित कुकी समस्या के कारण

, मैं सुझाव चाहते हैं कि आप सभी प्रमाणीकरण चरणों सर्वर अंत से शुरू करने के लिए, इससे पहले कि मुख्य HTML पृष्ठ पर सभी परोसा जाता है। फिर आप सुनिश्चित करेंगे कि आपका ऐप दो बार लोड नहीं होता है। यह कई प्रमाणीकरण/पहचान मिडलवेयर सॉफ़्टवेयर समाधानों का सामान्य व्यवहार है।


आप एप्लिकेशन उल्लेख जब यह है कि क्या आप एक शुद्ध WebApp मतलब स्पष्ट नहीं है, या आप इस तरह के रूप में Phonegap चौखटे का उपयोग करके नियंत्रण एक संकर अनुप्रयोग में उपलब्ध है। फोनगैप या इसी तरह के साथ, आप ऐप के अंदर ब्राउज़र के अंदर एक ब्राउज़र लोड कर सकते हैं - उस स्थिति में ChildBrowser एक ही कुकी सीमाओं से सीमित नहीं है।

मैंने हाल ही में आईओएस के लिए फोनगैप और चाइल्डब्रोसर के साथ यह काम करने के तरीके पर एक ट्यूटोरियल लिखा था।

सूचना है कि इस ट्यूटोरियल OAuth 2.0 जो OAuth 1.0 से कुछ अलग है का उपयोग करने पर है।

+0

चूंकि मैं सर्वर-साइड प्रमाणीकरण का उपयोग कर रहा हूं, और टोकन को ड्रॉपबॉक्स पर भेजा जाता है और पैरामीटर प्राप्त करने के माध्यम से कॉलबैक पर वापस भेज दिया जाता है, मुझे संदेह है कि कुकी सीमा कोई समस्या नहीं होगी। मैं अपना ऐप वेबपैप के रूप में और फोनगैप में लिपटे मूल एप के रूप में उपलब्ध कराऊंगा, इसलिए ट्यूटोरियल काम में आ सकता है। अगर आईफ्रेम दृष्टिकोण फोनगैप पर भी काम करेगा? यदि कुकीज कोई समस्या नहीं है तो फोनगैप में iframe पर एक ChildBrowser का उपयोग करने के लिए कोई लाभ? आपके उत्तर के लिए बहुत धन्यवाद! –

+0

हां, वेबपैप में जो कुछ भी काम करता है, वह फोनगैप में भी काम करता है। –

+0

जब भी उपयोगकर्ता ड्रॉपबॉक्स प्रमाणीकरण लॉगिन पृष्ठ के साथ इंटरैक्ट करता है, तब भी आप कुकी सीमाओं के साथ समस्याओं में भाग ले सकते हैं, यह कुकीज़ को सेट करने से प्रतिबंधित हो सकता है, जिसके परिणामस्वरूप त्रुटि हो सकती है। –

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

  • कोई संबंधित समस्या नहीं^_^