我使用的是来自最新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的唯一可能的方法是获取当前会话并在服务器端使用它。