说明:Facebook PHP SDK,如何维护持久登录-


Facebook PHP SDK, how to maintain persistent login

我使用的是来自最新FB PHP SDK的非js示例。它工作得很好,除非用户关闭浏览器并重新打开页面。他们必须再次点击FB登录链接。

我假设$facebook->getUser()处理cookie

代码:

       require 'sdk/facebook/src/facebook.php';
       $facebook = new Facebook(array(
      'appId'  => 'test',
      'secret' => 'test',
      'cookie' => true));

// Get User ID
$user = $facebook->getUser();
// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.
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;
  }
}
// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}
?>

这里是不是少了一个步骤?我在这里找到了从FB cookie中提取数据的代码:facebook自动重新登录从cookie php

显然,不再需要与SDK虽然?

没有客户端是不可能的。

你的脚本没有足够的信息来知道是哪个用户请求了这个页面。

它是不可能做任何cookie,因为facebook会话是一个动态的状态,是存储在facebook服务器上。所以使用JS SDK的唯一可能的方法是获取当前会话并在服务器端使用它。