簡體   English   中英

facebook php-sdk 沒有退出

[英]facebook php-sdk not logging out

我很難讓這個工作。 我使用以下內容生成注銷 url:

$logout = "https://www.facebook.com/logout.php?next=" . urlencode('http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']) . "&access_token=" . $facebook->getAccessToken();

生成正確的(使用最新版本)url:

https://www.facebook.com/logout.php?next=http%3A%2F%2F...&access_token=AA....ZD

但是,這實際上並沒有將用戶注銷。 我嘗試使用

$facebook->getLogoutUrl(array('next' => 'myurl')) 

它生成幾乎相同的網址。 這也沒有奏效。 我不知道為什么它沒有將用戶注銷。 我實際上嘗試手動將地址放入地址欄中,但它會將我重定向到 Facebook 主頁。

facebook php sdk 使用 php 會話來標記讓您保持登錄狀態。要清除它,您只需銷毀會話即可。

索引.php:

<a href="logout.php">Log out</a>

注銷.php

$facebook = new Facebook(array('appId'  => FB_APP_ID, 'secret' => FB_APP_SECRET, 'cookie' => true));
$facebook->destroySession();
header('location: index.php');

FB_APP_ID 和 FB_SECRET 是我的特定應用程序信息。 換成你自己的。

如果您在使用 Facebook PHP SDK 時請求offline_access權限(有時甚至沒有它),它會使默認的注銷功能無法正常工作。 為了解決這個問題,以下對我有用:

//change your logout url to 
$logoutUrl = $facebook->getLogoutUrl(array( 'next' => ($fbconfig['baseurl'].'logout.php') ));

//on logout page
setcookie('fbs_'.$facebook->getAppId(), '', time()-100, '/', 'domain.com');
session_destroy();
header('Location: /');

可能是因為PHP會話和會話cookie仍然完整。 我寫了一篇簡短的文章 ,試圖揭露FB登錄/注銷的神秘色彩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM