簡體   English   中英

Facebook PHP:用戶退出facebook后,他們無法使用其他用戶登錄我的應用

[英]Facebook PHP: After user logs out of facebook, they can't login to my app with another user

抱歉,標題令人困惑,情況是這樣的……

  1. 用戶使用 Facebook 登錄我的應用程序
  2. 用戶注銷 facebook....其他人來到計算機...
  3. 第二個用戶嘗試訪問我的應用程序(不同的 facebook 帳戶,同一台計算機)
  4. 他們不能......相反,腳本獲取前一個用戶的訪問令牌。

我正在使用 facebook PHP SDK。

當用戶第一次嘗試登錄時,我會執行以下操作;

unset($_REQUEST);
unset($_COOKIE); //don't know if both are necessary
session_destroy();

然而不知何故,新的 fb 帳戶仍然被認為是最后一個帳戶(我得到了以前登錄的用戶訪問令牌,當我嘗試使用它時會拋出異常,因為該用戶不再登錄)。

我需要使用注銷 function 嗎? 我假設將用戶從 facebook 中注銷,這不是我想要做的,只需在我的應用程序中使用新用戶重新開始。

有任何想法嗎? 自從我清除所有內容以來,我真的不知道這些數據從哪里持續存在。 希望它是我遺漏的一些愚蠢的東西,但我想我會問以防萬一有人知道什么。

這似乎最終起作用了:

$fb_key = 'fbsr_'.$facebookConfig['app_id'];
setcookie($fb_key, '', time()-3600);
$facebook->destroySession();

薩布麗娜

使用具有有效用戶訪問令牌的注銷應該可以正常工作。 這是我使用的“除非允許離線訪問”


$user = $facebook->getUser();
$access_token = $_SESSION['fb_135669679827333_access_token'];
if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}
if ($user) {
  $params = array (
  access_token => ''.$access_token.''
  );
  $logoutUrl = $facebook->getLogoutUrl($params);
} else {
$params = array(
  scope => 'read_stream,publish_stream,publish_actions,read_friendlists'
  //redirect_uri => $url
  );
  $loginUrl = $facebook->getLoginUrl($params);
};

謝謝,但我不想讓用戶退出 facebook,只是退出我的應用程序。 – Sabrina Gelbart 4 月 4 日 10:40

通過執行 $this->facebook->destroySession(); 與您的問題相矛盾注銷用戶 facebook 而不是 facebook,如果其他用戶想使用這台計算機,他們應該從他們的 facebook 帳戶注銷 = 新用戶可以登錄您的網站。

你不希望用戶的 facebook 在他們從你的注銷時被注銷 facebook.com 對嗎? 那會讓我很沮喪

暫無
暫無

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

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