2012-07-14 24 views
9

facebook php sdk'u kullanarak web sitem için facebook oturum açıyorum.facebook SDK kullanarak nasıl çıkış yapılır?

Fark ettiğim şey, logout bağlantısının hiçbir şey yapmamasıdır. Oturumumu kapattıktan sonra, kullanıcı yine de sitede gezinebilir. İşte facebook.php benim kodudur:.

<?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>" 
?> 

Bu code yılında kütüğün üzerinde çalışıyor oturumu bağlantı oturumu yok etmeliyiz. Benim logout.php sayfayla

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

sorun hiç oturumu algılamaz: İşte sayfanın başlığıdır. Bu bir facebook api sorun veya php sorunum olduğunu bilmiyorum.

Kullanıcıyı facebook SDK'sı kullanarak nasıl oturum açarsınız?

+1

Kullanıcılar facebook'tan çıkış yapabilirler ... sitenizden çıkış yapamazlar. –

+0

oturumunu –

cevap

18

Sitenizin yanı sıra facebook'tan sitenizin URL'sini bir sonraki parametreye geçirerek oturumunuzu kapatarak oturumunuzu kapatabilirsiniz

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

Ayrıca bunları web sitenizden de kaydetmeniz gerekir VE web sitenizin otomatik olarak kullanıcınızı hatırlamasını ve bunları hemen yeniden kaydetmesini engellemeniz gerekir.

Kullanıcınızda otomatik olarak kaydedilen kodu devre dışı bırakın ve yeniden çıkış yapmayı deneyin. Oturumun yok edilmesi, sitenizin hatırlanan kullanıcı için yepyeni bir oturum oluşturmasını engellemez.

+0

'session_destroy()' ı denedim ve asla işe yaramıyor, cevaplarımda yazdıklarımı yaptım, umarım uzun vadede herhangi bir mola vermez –

+0

Bu benim için çalışır. Benim durumumda ne oldu 'getLogoutUrl()' '' access_token = 0' '' üreten URL idi. Bu yüzden yukarıdaki örnekte $ jeebook-> getAccessToken(); 'kullanarak erişim belirtecini manuel olarak ekledim. Ama sadece 'getLogoutUrl()' işlevinin neden eklenemediğini ve bunun yerine sıfır kullandığını merak ediyorum. Herhangi bir fikir? – Obay

+0

Bu benim için çalıştı. Beni Facebook'tan kurtardı ve uygulamam için oturumu yok etti. Neden burası herhangi bir yerde belgelenmiyor? Bu hala "resmi" çözüm mü? –

0

Oturumların kullanılacağı tüm sayfalarda session_start() numaralı telefonu aramanız gerekir.

Birini oturumdan çıkarmak için (yani, temizle) session_destroy()'u kullanabilirsiniz.

Son olarak, header('example.com'); aslında bir yeniden yönlendirme işlemi niyetinde, hiçbir şey yapmaz? Eğer öyleyse, `header ('Konum: http://example.com/') kullanmalısınız;

DÜZENLEME: Maalesef bunu düzgün okumadım, ikinci kod snippet'i nedir? Bu sizin logut.php sayfanız mı?

Sana getLogoutUrl() aradığınız Facebook API ile farkındayım kadarıyla, bu onların tıkladığında kullanıcılarınızı göndermesi gerektiğini, nerede ve logout.php Kendi değildir.

+1

Errr, downvoter'ı yok ederseniz yorum yapabilir misiniz? –

+0

tüm cevapları ve hatta sorumu reddediyor mu? tek bir kelimeyi söyleyerek ... –

+0

@MinaGabriel Lanet olası aptallar, hala çözmediğiniz için dengenizi + 1'ledim. –

0

Kullanıcıları facebook'tan çıkarmak zor olabilir. Bu için çalışır beni

// 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

Gönderdiğiniz için teşekkürler, ancak hiçbir şey yapmıyor –

+0

wp_redirect, Wordpress'in dışında çalışmıyor. 'Header (" Location: $ logout ") kullanın; exit; ' – 1owk3y

0

CEVAP bir oturumda günlük başlatıldığında

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

, biz ayarlarsanız bu session değişkenin herhangi, bu işlevi günlüğünü kırar null görünüyor ve kullanıcıya tekrar giriş yapmasını isteyin

1

Web sitem için facebook ile giriş çıkış yapan bir kullanıcının oturum açma kodu. Kullanıcıyı kapatmak için oturumu yok etmek zorunda değilsiniz, teknik olarak yapmanız gereken tek şey, kendi web sitenize, bu oturumun, kullanıcının içeri girmesine izin verilmeyeceği sinyalini vermektir.

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"); 
?> 

İndex.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: eve sonra

<?php 
    session_start();   
    if (isset($_SESSION['user_facebook_email']) !== true || 
     $_SESSION['user_facebook_email'] == "") 
    { 
     header("Location: index.php"); 
     exit; 
    } 
?> 

Bu kod ile
<?php 
    require("log2.php"); 
?> 

, kullanıcı otomatik kaydedilir ve bunlar çıkış kodu çağırmak durumunda, siteyle: Bir oturum açmış kullanıcı olmadan erişimi engellemek istiyorum ry php dosyası, üstteki bu koymak Tekrar giriş yapana kadar izin vermeyin.

İlgili konular