2011-10-10 48 views
5

Tôi có một trang web đang sử dụng cả SDK PHP và JS SDK.Việc đăng xuất khỏi JS SDK không đăng xuất khỏi PHP SDK

Sau khi cập nhật lên OAuth trong cả hai, tôi đã nhận thấy rằng việc đăng xuất khỏi JS không thực sự đăng xuất người dùng ra khỏi PHP.

Có vẻ như giải pháp chung là thực hiện cuộc gọi cho '/ tôi' và sau đó, nếu lỗi đó, giả sử người dùng đã đăng xuất. Tuy nhiên, tôi không cần phải gọi/tôi trên mỗi trang kết xuất, tôi chỉ muốn biết liệu người dùng có đăng nhập mà không có lần truy cập hiệu suất của lệnh gọi API FB trên mỗi lần hiển thị hay không.

Có cách nào để SDK PHP được thông báo về đăng xuất đã xảy ra thông qua SDK JS không?

Một số điều tôi đã cố gắng:

  • luận ra các nội dung của setPersistentData trong Facebook.php
  • tay xóa fbsr _ :: APPID :: Cookie

Cảm ơn!

+1

bạn đã thử một cái gì đó giống như cuộc gọi ajax đến một trang với điều này [ '$ facebook-> destorySession()'] (https://github.com/facebook/php-sdk/blob/master/src/ base_facebook.php # L1088) phương pháp trên gọi lại JS? – ifaour

+0

hãy xem bản cập nhật gần đây cho php SDK: https://github.com/facebook/php-sdk/commit/4b0e00096c01a959c3f7d9b0655856c17c46383f có thể bạn có thể tìm thấy nó có liên quan –

+0

Phiên bản SDK tôi không có destroySession, điều này dường như đã làm việc. Cảm ơn! –

Trả lời

0
setcookie(session_name(), '', time()-42000, '/'); 
unset($_SESSION); 
0

được người dùng truy cập token từ facebook thư viện

$access_token = $this->facebook->getAccessToken(); 

và sau đó sử dụng mã này trong chức năng logout

if ($this->facebook_user) 
     { 


     $logoutUrl = $this->facebook->getLogoutUrl()."&access_token=".$access_token; 


     redirect($logoutUrl); 
     } 

Và thực hiện một số thay đổi trong tập tin thư viện facebook.

public function getLogoutUrl($params=array()) { 
    return $this->getUrl(
     'www', 
     'logout.php', 
     array_merge(array(
     'next' => $this->getCurrentUrl(), 

    ), $params) 
    ); 
    } 
Các vấn đề liên quan