2010-03-31 33 views
5

प्रतिपादन नहीं कर रहा है मैं एक फेसबुक कनेक्ट एकल साइन-ऑन साइट को लागू करने की कोशिश कर रहा हूं। मैं मूल रूप से बस कनेक्ट बटन (<fb:login-button>) था, जिसे उपयोगकर्ता को साइन इन करना चाहते थे, हर बार क्लिक करना था। अब मेरे पास ऑटो लॉगिन और लॉगआउट सुविधाएं काम कर रही हैं। यही है, मेरी साइट एक लॉग-इन फेसबुक खाते का पता लगाएगी और स्वचालित रूप से उन्हें प्रमाणित करेगी यदि यह मेरी साइट के किसी उपयोगकर्ता खाते में से एक मैच मिल सकती है, और फेसबुक सत्र खो जाने पर स्वचालित रूप से प्रमाणित हो जाता है। मेरे पास मैन्युअल लॉगआउट बटन भी है जो उपयोगकर्ता को मेरी साइट और फेसबुक दोनों से लॉग आउट करेगा। वे सभी सही तरीके से काम कर रहे हैं, लेकिन अब मेरा मूल कनेक्ट बटन अंतःस्थापित नहीं किया जा रहा है। यह सिर्फ सादा एक्सएचटीएमएल (यानी, यह सादे पाठ की तरह दिखता है - एक बटन नहीं - और अनजान है) के रूप में दिखाई देता है, और कोई एक्सएफबीएमएल लागू नहीं होता है।फेसबुक कनेक्ट लॉगिन बटन

हर पृष्ठ पर::

<body> 
{...} 
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script> 

<script type="text/javascript> 
FB.init('APIKey', '/xd_receiver.htm'); 

var isAuth; // isAuth determines if the user is authenticated on my site 
      // it should be true on the logout page, false on the login page 
FB.ensureInit(function(){ 
    var session = FB.Facebook.apiClient.get_session(); 
    if (session && !isAuth) { 
     PageMethods.FacebookLogin(session.uid, session.session_key, FBLogin, FBLoginFail); 
     // This is an AJAX call that authenticates the user on my site. 
    } else if(!session && isFBAuth) { 
     PageMethods.FacebookLogout(FBLogout, FBLogoutFail); 
     // This is an AJAX call that deauthenticates the user on my site. 
    } 
    // the callback functions do nothing at the moment 
}); 
</script> 

{...} 
</body> 

प्रवेश पृष्ठ पर: यहाँ बुनियादी कोड है

<body> 
{...} 
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script> 

<script type="text/javascript> 
    FB.init('APIKey', '/xd_receiver.htm'); 
    {...} // auto-auth code as on every page 
</script> 

<!-- This is the button that fails to render --> 
<fb:login-button v="2" onlogin="UserSignedIntoFB();" size="large" autologoutlink="true"><fb:intl>Login With Your Facebook Account</fb:intl></fb:login-button> 

<script type="text/javascript"> 
    function UserSignedIntoFB() { 
     {...} // posts back to the server which authenticates the user on my site & redirects 
    } 
</script> 
{...} 
</body>  

लॉगआउट पृष्ठ पर (यह पेज नहीं दिखाई उपयोगकर्ताओं में लॉग इन करने के लिए है): (

0: यह पेज लॉग आउट उपयोगकर्ताओं को दिखाई नहीं)

<body> 
{...} 
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script> 

<script type="text/javascript> 
    FB.init('APIKey', '/xd_receiver.htm'); 
    {...} // auto-auth code as on every page 
</script> 

<script type="text/javascript"> 
    function FBLoggedOut() { 
     {...} // posts back to the server which deauthenticates the user on my site & redirects to login 
    } 

    function Logout() { 
     if (FB.Facebook.apiClient.get_session()) { 
      FB.Connect.logout(FBLoggedOut); // logs out of Facebook if it's a Facebook account 
      return false; 
     } else { 
      return true; // posts back if it's a non-Facebook account & redirects to login 
     } 
    } 
</script> 
<a onclick="return Logout();" href="postback_url">Sign Out</a> 
{...} 
</body> 

कुछ बातें मैं पहले से ही देखा है है

  • स्वचालित लॉगिन और लॉगआउट बहुत अच्छा काम कर रहे हैं। मैं एक और टैब पर फेसबुक से लॉग इन और आउट कर सकता हूं और मेरी साइट सत्र परिवर्तनों को नोटिस करेगी और तदनुसार अपडेट करेगी।
  • लॉगआउट ठीक काम करता प्रतीत होता है: जब क्लिक किया जाता है, तो यह उपयोगकर्ता को प्रमाणित करता है और इच्छित रूप से फेसबुक से उन्हें लॉग आउट करता है।
  • समस्या लगता है कि आमतौर पर एक फेसबुक उपयोगकर्ता लॉग आउट होने के बाद होता है, लेकिन यह कुछ हद तक अंतःक्रियात्मक होता है; यह कभी भी लॉगिन करने से पहले हो सकता है, और यह कुछ मिनट/ताज़ा करने के बाद चला जाता है।
  • कुछ कुकीज़ लॉगिन/लॉगआउट प्रक्रिया के बाद छोड़ दी गई हैं, लेकिन उन्हें हटाने से समस्या ठीक नहीं होती है।
  • ब्राउज़र को पुनरारंभ करने से समस्या ठीक नहीं होती है।
  • समस्या होने पर उपयोगकर्ता निश्चित रूप से फेसबुक और मेरी साइट से लॉग आउट हो गया है। मैंने फेसबुक सत्र और साइट प्रमाणीकरण के लिए जांच की है।
  • सभी बाहरी स्क्रिप्ट कॉल सही तरीके से परोसा जा रहे हैं।
  • संपादित करें: साथ ही, जब लॉगिन बटन प्रस्तुत करता है, तो यह ठीक काम करता है।

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

+0

पहले मैं फ़ीचरलोडर.जे.एस.एस.पी. लोडिंग + एफबी को छोड़कर सभी को हटाने की कोशिश करता हूं।Init + और देखें कि सबकुछ ठीक है या नहीं। इस प्रयोग के परिणामों पर निर्भर करता है कि आपको डीबग जारी रखना है। – zerkms

+0

ठीक है, मैं अभी के लिए ऐसा कर रहा हूं और ऐसा लगता है कि कोई ऑटो-लॉगिन क्षमता नहीं है। मेरी इच्छा है कि मुझे पता था कि मैं कहां गलत हो रहा था। – tloflin

उत्तर

6

फेसबुक जेएस को अपने पेज के बहुत अंत में शामिल करें (फ़ीचरलोडर) को कॉल करना सुनिश्चित करें, इसलिए आपका पृष्ठ तब प्रस्तुत करता है जब फेसबुक जेएस टेक्स्ट को बटन में बदलने के लिए कुछ जादू करता है। अन्यथा यह fb के सर्वर को कॉल करने और ब्राउज़र में अपनी साइट सामग्री को लोड करने के बीच एक दौड़ है ...

कम से कम वह समस्या थी जिसमें मैंने भाग लिया था।

+1

मैं इसे उत्तर के रूप में स्वीकार कर रहा हूं, क्योंकि यह व्यवहार दूर चला गया प्रतीत होता है, हालांकि मैंने पूरी तरह से परीक्षण नहीं किया है। – tloflin

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