2012-07-14 27 views
9

मैं facebook php sdk का उपयोग कर अपनी वेबसाइट के लिए facebook लॉग इन कर रहा हूं।फेसबुक एसडीके का उपयोग कर उपयोगकर्ता को लॉग आउट कैसे करें?

मैंने देखा कि logout लिंक कुछ भी नहीं करता है। लॉगआउट करने के बाद, उपयोगकर्ता अभी भी साइट पर नेविगेट कर सकता है। यहाँ facebook.php में मेरे कोड है:।

<?php 
    require 'src/facebook.php'; 
    $facebook = new Facebook(array(
      'appId' => '*************', 
      'secret' => '******************************', 
    )); 
    $user = $facebook->getUser(); 
    $loginUrl = $facebook->getLoginUrl(); 
    echo "<a href='$loginUrl'>login</a>"; 

    $logoutUrl = $facebook->getLogoutUrl(); 
    echo $loginUrl; 
    if($user){ 
     session_start() ; 
     $_SESSION['user_info'] = $user; 
     $_SESSION['user_pro']= $facebook->api('/me'); 
     print_r($_SESSION); 
    } 
    else{ 
     echo 'not logged in '; 
    } 

    echo "<a href='example.com/logout.php'>log out </a>" 
?> 

यह code में लॉग पर ठीक काम करता है लॉग आउट लिंक सत्र को नष्ट करना चाहिए।

<?php 
    print_r($_SESSION) ; 
    header('example.com') ; 
?> 

समस्या मेरी logout.php पेज के साथ यह बिल्कुल सत्र पता नहीं लगा पाया है: यहाँ पृष्ठ के शीर्षक है। मुझे नहीं पता कि यह facebook api समस्या है या मेरी php समस्या है।

आप फेसबुक एसडीके का उपयोग कर उपयोगकर्ता को कैसे लॉग आउट करते हैं?

+1

उपयोगकर्ता फेसबुक से लॉगआउट कर सकते हैं ... वे आपकी साइट से लॉगआउट नहीं कर सकते हैं। –

+0

यदि आप सत्र –

उत्तर

18

आप अपनी साइट से और साथ ही फेसबुक से लॉग आउट कर सकते हैं जैसे कि अगली पैरामीटर में अपनी साइट यूआरएल प्रदान करके और सत्र को नष्ट कर

$token = $facebook->getAccessToken(); 
$url = 'https://www.facebook.com/logout.php?next=' . YOUR_SITE_URL . 
    '&access_token='.$token; 
session_destroy(); 
header('Location: '.$url); 

आपको उन्हें अपनी वेबसाइट से भी लॉग आउट करना होगा और आपको अपनी वेबसाइट को स्वचालित रूप से अपने उपयोगकर्ता को याद रखने और उन्हें तुरंत लॉग इन करने से रोकना होगा।

उस कोड को अक्षम करें जो आपके उपयोगकर्ता में ऑटो-लॉग करता है और फिर से लॉगआउट करने का प्रयास करता है। सत्र को नष्ट करने से आपकी साइट को याद किए गए उपयोगकर्ता के लिए एक नया नया मान्य सत्र बनाने से रोका नहीं जाएगा।

+0

मैंने' session_destroy() 'की कोशिश की और यह कभी काम नहीं करता है, मैं अपने उत्तर में जो लिखा वह करता हूं, उम्मीद है कि लंबे समय तक यह कोई ब्रेक नहीं करता है –

+0

यह मेरे लिए काम करता है। मेरे मामले में जो हुआ वह यूआरएल था जो 'getLogoutUrl() 'का उत्पादन कर रहा था' access_token = 0' था। इसलिए मैंने '$ facebook-> getAccessToken(); 'का उपयोग कर एक्सेस टोकन मैन्युअल रूप से ऊपर दिए गए उदाहरण का पालन किया। लेकिन मैं बस सोच रहा हूं कि 'getLogoutUrl() 'फ़ंक्शन इसे क्यों नहीं जोड़ सका, और इसके बजाय शून्य का उपयोग किया। कोई विचार? – Obay

+0

यह मेरे लिए काम किया। यह मुझे फेसबुक से बाहर लॉग करता है और मेरे ऐप के सत्र को नष्ट कर देता है। यह कहीं भी दस्तावेज क्यों नहीं है? क्या यह अभी भी "आधिकारिक" समाधान है? –

0

आपको उन सभी पृष्ठों पर session_start() पर कॉल करने की आवश्यकता है जहां सत्र का उपयोग किया जाएगा।

सत्र से बाहर किसी को लॉग इन करने के लिए (यानी इसे साफ़ करें) आप session_destroy() का उपयोग कर सकते हैं।

अंत में, header('example.com'); वास्तव में कुछ भी नहीं करेगा, क्या आप एक पुनर्निर्देशन करने का इरादा रखते हैं? यदि ऐसा है, तो आपको 'हेडर (' स्थान: http://example.com/ ') का उपयोग करना चाहिए;

संपादित करें: क्षमा करें मैंने इसे ठीक से नहीं पढ़ा है, दूसरा कोड स्निपेट क्या है? क्या यह आपका logout.php पेज है?

जहां तक ​​मैं फेसबुक एपीआई से अवगत हूं, जब आप getLogoutUrl() पर कॉल कर रहे हैं, तो वह लिंक है जब आप लिंक पर क्लिक करते समय अपने उपयोगकर्ताओं को भेजना चाहिए, न कि अपने logout.php

+1

एरर, डाउनवॉटर, सत्र को नष्ट करने के लिए कर सकते हैं तो वे कर सकते हैं? –

+0

सभी उत्तरों और यहां तक ​​कि मेरे प्रश्न को कम करें? एक शब्द कहने के साथ ... –

+0

@MinaGabriel डॉन बेवकूफों, मैंने संतुलन के लिए आपका प्रश्न +1 किया क्योंकि आपने अभी भी इसे हल नहीं किया है। –

0

फेसबुक से उपयोगकर्ताओं को लॉग आउट करना मुश्किल हो सकता है। इस के लिए काम करता है मुझे

// Get an instance of the Facebook class 
$facebook = $this->facebook_instance_factory(); 
// Destroy the session so that no Facebook data is held 
$facebook->destroySession(); 
$logout = $facebook->getLogoutUrl(); 
$facebook->setAccessToken(''); 
// Redirect the user to the logout url, facebook will redirect him to our page 
wp_redirect($logout); 
+0

आपके लिए पोस्ट करने के लिए धन्यवाद लेकिन यह कोई काम नहीं करता –

+0

wp_redirect वर्डप्रेस के बाहर काम नहीं करता है। 'हेडर (" स्थान: $ लॉगआउट ") का उपयोग करें; बाहर निकलें; ' – 1owk3y

0

उत्तर

$_SESSION['fb_(your_APP_ID)_access_token'] = '' ; 

जब एक सत्र में लॉग आरंभ नहीं हो जाता है, यह शून्य है कि यदि हम सेट इन session चर के किसी भी है, यह समारोह में लॉग टूट जाता रहा है और उपयोगकर्ता को फिर से लॉग इन करने के लिए कहें

1

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

logout.php:

<?php 
    require_once("facebook-php-sdk-6c82b3f/src/facebook.php"); 
    $config = array(); 
    $config['appId'] = '2911111111146'; 
    $config['secret'] = 'a6eaaaaaaaaaaaaaaaaaaaaaaaaaad1a'; 
    $config['fileUpload'] = false; 
    $facebook = new Facebook($config); 
    $logouturl = $facebook->getLogoutUrl(); 
    $_SESSION['user_facebook_email'] = ""; 
    $_SESSION['ask_user_to_login'] = true; 
    header("Location: showquestions.php"); 
?> 

index.php:

<?php 
    require_once("facebook-php-sdk-6c82b3f/src/facebook.php"); 

    $config = array(); 
    $config['appId'] = '2911111111146'; 
    $config['secret'] = 'a6eaaaaaaaaaaaaaaaaaaaaaaaaaad1a'; 
    $config['fileUpload'] = false; 

    $facebook = new Facebook($config); 
    $userId = $facebook->getUser(); 
    if ($_SESSION['ask_user_to_login'] == true || $userId == 0){ 
     $loginUrl = $facebook->getLoginUrl(); 
     $_SESSION['ask_user_to_login'] = false; 
     echo "<button type='button' onClick=\"window.location='$loginUrl'\">" . 
      "<img src='picture.gif' alt='Login with facebook'/>" . 
      "</button>"; 
     exit; 
    } 
    else 
    { 
     $userInfo = $facebook->api('/' + $userId); 
     session_cache_expire (150000); //set the cache expire to 15000 minutes 
     $_SESSION['user_facebook_email'] = $userInfo['email']; 
     $_SESSION['facebook'] = $facebook;  
     header("Location: showquestions.php"); 
    } 
    $userInfo = $facebook->api('/' + $userId); 
    echo "Welcome" . $userInfo['email']; 
?> 

login.php:

<?php 
    session_start();   
    if (isset($_SESSION['user_facebook_email']) !== true || 
     $_SESSION['user_facebook_email'] == "") 
    { 
     header("Location: index.php"); 
     exit; 
    } 
?> 
तो पूर्व संध्या में

ry php फ़ाइल आप एक लॉग इन हुए प्रयोक्ता बिना एक्सेस रोकना चाहते हैं, शीर्ष पर यह डाल:

<?php 
    require("log2.php"); 
?> 
इस कोड के साथ

, उपयोगकर्ता में स्वचालित रूप से लॉग ऑन है, और अगर वे लॉगआउट कोड आह्वान, साइट होगा उन्हें दोबारा लॉगिन करने तक न दें।