2009-09-06 12 views
16

मैं PHP और ज़ेंड फ्रेमवर्क का उपयोग कर एक कनेक्ट ऐप बनाने की कोशिश कर रहा हूं। मेरे पास एक Zend_Auth आधारित उपयोगकर्ता प्रमाणीकरण प्रणाली भी है। अब, मैं फेसबुक का उपयोग करके लॉग इन करने में सक्षम हूं लेकिन लॉग आउट काम नहीं कर रहा है।PHP और ज़ेंड में फेसबुक कनेक्ट का उपयोग कर उपयोगकर्ताओं को लॉग आउट कैसे करें?

मुझे Zend_Auth पहचान को साफ़ करने और साथ ही सभी फेसबुक लॉगिन जानकारी को हटाने की आवश्यकता है। ऐसा करने का सबसे अच्छा तरीका क्या होगा?

मैं बुला Zend_Auth::getInstance()->clearIdentity()

उनमें से कोई भी काम करने के लिए लग रहे हैं के बाद एक साथ और भी facebook_client->logout($next)facebook_client->expire_session() और facebook_client->clear_cookie_state(); की कोशिश की।

उत्तर

20

आपको जावास्क्रिप्ट क्लाइंट लॉगआउट पहले पर कॉल करना होगा, फिर उन्हें अपनी PHP लॉगआउट स्क्रिप्ट पर भेजें। तो, फोन .js:

FB.Connect.logoutAndRedirect("/path/to/zend/logout/controller"); 

आप एक मॉडल पॉपअप है कि "कहते हैं यदि आप इस साइट और फेसबुक से बाहर प्रवेश कर रहे हैं देखेंगे * आप जहाँ भी अपने लॉगआउट स्क्रिप्ट है पर भेज दिया जाएगा:

try 
{ 
    $facebook->expire_session(); 
} 
catch (FacebookRestClientException $e) 
{ 
    //you'll want to catch this 
    //it fails all the time 
} 

मैं आमतौर पर भी पीएचपी लॉगआउट लिपि में इस समारोह फोन, सुरक्षा के लिए:

/** 
* Remove the local Facebook cookies that get set manually 
* 
* @return void 
*/ 
protected function _killFacebookCookies() 
{ 
    // get your api key 
    $apiKey = $this->getConfig()->getApiKey(); 
    // get name of the cookie 
    $cookie = $this->getConfig()->getCookieName(); 

    $cookies = array('user', 'session_key', 'expires', 'ss'); 
    foreach ($cookies as $name) 
    { 
     setcookie($apiKey . '_' . $name, false, time() - 3600); 
     unset($_COOKIE[$apiKey . '_' . $name]); 
    } 

    setcookie($apiKey, false, time() - 3600); 
    unset($_COOKIE[$apiKey]);  
} 
+0

धन्यवाद! यह काम करता हैं! :) – Abhinav

+0

हाँ, काम करता है! अतिरिक्त फ़ंक्शन _किलफ़ेसबुककुकीज़() के बिना इसका परीक्षण किया गया, ठीक काम करता है। – Alex

0

आप फेसबुक उपयोगकर्ता लॉग आउट करें और इस तरह से PHP कोड के साथ अपनी वेबसाइट पृष्ठ पर उपयोगकर्ता अनुप्रेषित कर सकते हैं:

शीर्षलेख ("स्थान:"। $ फेसबुक> getLogoutUrl (सरणी ('अगले' => "http://yourwebsite.com/redirectAfterFacebookLogout.php")));

0

(नया फेसबुक एसडीके) मेरे लिए getconfig() काम नहीं करेगा। इसलिए मुझे base_facebook.php फ़ाइल से नए फ़ंक्शन ढूंढना पड़ा और इसमें थोड़ा सा कोड जोड़ना पड़ा। फिर इसे अपनी कॉलिंग फ़ाइल में कॉल करें। ऐसा करने से पहले, $ facebook-> नष्ट करें सत्र();

public function _killFacebookCookies() 
    { 
     // get your api key 
     $apiKey = $this->getAppId(); 
     // get name of the cookie 
     $cookie = $this->getSignedRequestCookieName(); 

     $cookies = array('user', 'session_key', 'expires', 'ss'); 
     foreach ($cookies as $name) 
     { 
      setcookie($apiKey . '_' . $name, false, time() - 3600); 
      unset($_COOKIE[$apiKey . '_' . $name]); 
     } 

     setcookie($apiKey, false, time() - 3600); 
     unset($_COOKIE[$apiKey]);   
    } 
संबंधित मुद्दे