हम पिछले परियोजना पर एक समान आवश्यकताओं था: GWT दृश्यपटल और Android के साथ GAE बैकएंड/आईफोन क्लाइंट्स। इसके अलावा, हम उपयोगकर्ता प्रमाण-पत्रों को स्टोर नहीं करना चाहते थे।
तो हम ओपनआईडी का उपयोग करना चुनते हैं, जो दुर्भाग्य से एक वेब मानक है और मोबाइल उपकरणों के साथ अच्छा नहीं खेलता है, लेकिन यह करने योग्य है।
जीएई पक्ष पर हमने बस संघीय लॉगिन सक्षम किया जिसने हमें ओपनआईडी दिया।
मोबाइल उपकरणों पर, जब उपयोगकर्ता को लॉगिन करने की आवश्यकता होती है तो हम उन्हें ओपनआईडी प्रमाणीकरणकर्ताओं (Google, याहू, आदि ..) में एक सूची ओप प्रस्तुत करते हैं। फिर हम एक मूल ब्राउज़र (एम्बेडेड ब्राउज़र नहीं) खोलते हैं और सीधे उपयोगकर्ता को ओपनआईडी प्रमाणीकरण साइट चुनने के लिए खोलते हैं। उलझन यह है कि उपयोगकर्ता के ब्राउज़र में आमतौर पर उपयोगकर्ता नाम/पास याद किया जाता है, इसलिए इस चरण के लिए उपयोगकर्ता को एक बटन दबाए जाने की आवश्यकता होती है।
यह सब बहुत सरल है। अब यहां मुश्किल हिस्सा है: उपयोगकर्ता लॉगिन की पुष्टि करने के बाद, ओपनआईडी हमारे जीएई रिटर्न यूआरएल पर रीडायरेक्ट करता है (अनुरोध होने पर आपको यह यूआरएल प्रदान करने की आवश्यकता है)। इस यूआरएल पर हम एक कस्टम URL बना, उदाहरण के लिए:
yourappname://usrname#XXXYYYZZZ
जहां XXXYYYZZZZ प्रमाणीकरण टोकन है। हमें रिटर्न पेज से यह टोकन मिलता है जहां इसे एसीएसआईडी कुकी के रूप में संग्रहीत किया जाता है: हमने इस कुकी को पढ़ने और इसे ऊपर के कस्टम यूआरएल में लपेटने के लिए कुछ जेएसपी का इस्तेमाल किया।
फिर हम yourappname://
यूआरएल को संभालने के लिए हमारे एंड्रॉइड और आईफोन ऐप्स पंजीकृत करते हैं, ताकि जब उपयोगकर्ता इस लिंक को क्लास्क कर लेता है, तो हमारा ऐप लागू होता है और लिंक इसे पास कर दिया जाता है। हम इस लिंक से उपयोगकर्ता नाम और टोकन निकालते हैं और हम इसे जीएई बैकएंड में आरईएसटी अनुरोधों में उपयोग करते हैं।
यदि आपके कोई और प्रश्न हैं तो मैं खुशी से इस पोस्ट को अपडेट करूंगा।
अद्यतन:
उत्पादन AppEngine पर उपयोगकर्ता सत्र कुकी ACSID
नाम पर है, जबकि विकास AppEngine सर्वर पर dev_appserver_login
नामित है।
स्रोत
2011-02-17 14:16:21
+1 - बहुत विस्तृत! कस्टम यूआरएल पाठ क्या दिखाता है? "एप्लिकेशन पर वापस जाने के लिए इसे क्लिक करें"? या कुछ इस तरह का? –
यह आपको जो भी पसंद है दिखा सकता है। मैंने "जारी रखें .." लिंक का उपयोग किया जो एक बटन जैसा दिखता है। कुछ जावास्क्रिप्ट के साथ आप संभवतः ऐप को लॉन्च कर सकते हैं, उपयोगकर्ता को लिंक पर क्लिक करने की आवश्यकता के बिना - यह कोशिश नहीं की, इसे परीक्षण करने की आवश्यकता होगी। –