2012-02-06 12 views
5

मैं एक वेबपैप लिख रहा हूं जहां उपयोगकर्ताओं को फेसबुक के साथ लॉगिन करने की आवश्यकता होगी (एक फेसबुक रहित लॉगिन ऐप के संदर्भ में समझ में नहीं आता है)। आदर्श रूप से, अपनी प्रारंभिक यात्रा के बाद, जब कोई उपयोगकर्ता /index पर जाता है, तो मेरा वेबैप पहले से जमा की गई कुकी को देखता है, और सहजता से उपयोगकर्ता को लॉग इन करता है और एप्लिकेशन (/app) पर जाता है।वेबसाइट्स के लिए फेसबुक लॉगिन: उपयोगकर्ता फेसबुक लॉगआउट को संभालने का सर्वोत्तम अभ्यास?

मेरी समस्या तब उत्पन्न होती है जब उपयोगकर्ता फेसबुक से लॉग आउट करता है, और मेरे ऐप पर वापस आ जाता है। चूंकि मेरे डोमेन पर उनकी कुकी अभी भी मौजूद होगी, और उनके oauth_token अभी भी मान्य होंगे (वे अब 60 दिनों के लिए हैं), मैं अभी भी उपयोगकर्ता को स्वचालित रूप से लॉग इन कर सकता हूं, और ऐप अपेक्षित रूप से काम करेगा।

मेरे लिए, यह सही नहीं लगता है कि ऐप फेसबुक पर साइन इन नहीं होने पर भी उनके फेसबुक खाते से साइन इन रहता है। मैंने स्टैक ओवरफ्लो पर खुद को खेला; यह इस व्यवहार को भी अनुमति देता है। क्या मेरी चिंताओं को गलत स्थान दिया गया है, या यह देखने का एक अनुशंसित तरीका है कि उपयोगकर्ता को फेसबुक पर साइन इन किया गया है जब वे पहले मेरे सर्वर से /index का अनुरोध करते हैं।

उत्तर

2

मेरी राय में, मुझे नहीं लगता कि उपयोगकर्ता को पहले ही फेसबुक से साइन आउट होने पर साइन इन होना चाहिए।

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

मुझे लगता है कि यहां समस्या यह है कि आप उपयोगकर्ता की फेसबुक लॉगिन स्थिति को याद रखने के लिए अपनी कुकी सेट करते हैं। जाहिर है, जब उपयोगकर्ता फेसबुक से साइन आउट करता है, तो आपकी कुकी साफ़ नहीं होती है। तो इस बिंदु पर आपकी कुकी फेसबुक की स्थिति के साथ सिंक हो गई है।

मैं अनुशंसा करता हूं कि आप उपयोगकर्ता की फेसबुक लॉगिन स्थिति को याद रखने के उद्देश्य से अपनी कुकी का उपयोग न करें। इस उद्देश्य के लिए हमेशा फेसबुक पर भरोसा करें।

सामान्य रणनीति यह है कि जब भी उपयोगकर्ता आपके ऐप पर आता है, तो आपको फेसबुक द्वारा प्रदान की गई तंत्र का उपयोग करके फेसबुक लॉगिन स्थिति की जांच करनी चाहिए। इस तरह, आपका ऐप उपयोगकर्ता की लॉगिन स्थिति के मामले में फेसबुक के साथ समन्वयित होगा।

मैं व्यक्तिगत रूप से कोड के इस टुकड़े का उपयोग उपयोगकर्ता लॉगिन के प्रयोजन के लिए फेसबुक Javascript API कॉल करने के लिए:

/* 
* Init code for Facebook connect 
*/ 
window.fbAsyncInit = function() { 
     FB.init({ 
       appId  : FACEBOOK_APP_ID, // App ID 
       channelUrl : CHANNEL_URL, // Channel File 
       status  : true, // check login status 
       cookie  : true, // enable cookies to allow the server to access the session 
       xfbml  : true, // parse XFBML 
       oauth  : true 
     }); 

     // check facebook login status 
     FB.getLoginStatus(function(response) { 
       console.log("FB login status: " + response.status); 
       if (response.status === 'connected') { 
         showWelcome(); //display welcome message 
       } else if (response.status === 'not_authorized') { 
         // the user is logged in to Facebook, but not connected to the app 
         showFbLogin(); //display Facebook Login button 
       } else { 
         // the user isn't even logged in to Facebook. 
         showFbLogin(); //display Facebook Login button 
       } 
     }); 

     // subscribe to facebook events 
     FB.Event.subscribe('auth.authResponseChange', function(response) { 
       fbAuthResponseChanged(response); 
     }); 
}; 
+0

समस्या है, FBJS कुकी मेरे डोमेन पर साफ नहीं है, जब वे फेसबुक से प्रस्थान करें। फेसबुक से साइन आउट करने और मेरे ऐप पर जाने के बाद, मेरा ऐप अभी भी एफबीजेएस कुकी देखता है। मुझे नहीं पता कि वे वास्तव में साइन इन नहीं हैं जब तक कि मैं जावास्क्रिप्ट लोड नहीं करता। यह एक अतिरिक्त रीडायरेक्ट जोड़ता है यदि वे * लॉग इन हैं, क्योंकि उन्हें अपना/लॉगिन पेज लोड करना होगा, जहां जेएस को पता चला है कि वे पहले ही लॉग इन हैं, और उन्हें रीडायरेक्ट करते हैं/ऐप –

+0

जिस तरह से मैं इसे देखता हूं, हर बार आपका ऐप लॉग इन उपयोगकर्ता की तरफ से कुछ भी कर रहा है, आपको यह जांचने की ज़रूरत है कि उपयोगकर्ता वास्तव में उस बिंदु पर लॉग इन है या नहीं। जो भी कुकी आपके उपयोगकर्ता को फेसबुक उपयोगकर्ता लॉगिंग स्थिति याद रखने के लिए सेट करती है, आपको उस पर भरोसा नहीं करना चाहिए, या आपको इसे फेसबुक की स्थिति के साथ समन्वयित रखना चाहिए। –

+0

उदाहरण के लिए, आप अपने ऐप को फेसबुक पर पोस्ट करने से पहले हर बार FB.getLoginStatus फ़ंक्शन का आह्वान कर सकते हैं। यह निश्चित रूप से ऐसा करने का अनुकूलित तरीका नहीं हो सकता है। –

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