Php Facebook API会话难题

Php Facebook API会话难题,php,facebook,Php,Facebook,我有一个允许用户使用Facebook API登录的页面。当然,问题是当用户更改页面时,需要重新授权登录 所以在我的主页上我有 $facebook = new Facebook(array( 'appId' => 'xxx', 'secret' => 'xxxxxx', 'cookie' => false, )); $session = $facebook->getSession(); if ($session) { try {

我有一个允许用户使用Facebook API登录的页面。当然,问题是当用户更改页面时,需要重新授权登录

所以在我的主页上我有

$facebook = new Facebook(array(
    'appId'  => 'xxx',
    'secret' => 'xxxxxx',
    'cookie' => false,
));

$session = $facebook->getSession();

if ($session) {
    try {
        $uid = $facebook->getUser();
        $me = $facebook->api('/me');

        $_SESSION['fb_session'] = $me;
        $_SESSION['fb_session']['loginUrl'] = $facebook->getLoginUrl();
        $_SESSION['fb_session']['logoutUrl'] = $facebook->getLogoutUrl();
        $_SESSION['fb_session'] = array_merge($_SESSION['fb_session'], $session);
    } 

    catch (FacebookApiException $e) {
        error_log($e);
        unset($_SESSION['fb_session']);
    }
}

if ($_SESSION['fb_session']) {
    $x = $facebook->api("/{$_SESSION['fb_session']['id']}");
    print "<img src='https://graph.facebook.com/{$x['id']}/picture' />";                        
    print "<a href='facebook_logout.php'></a>";
} 
else {

    $loginUrl = $facebook->getLoginUrl();
    print "<a href='{$facebook->getLoginUrl()}'>Login to Post Comment</a>";
}
现在的问题是,当我对用户进行身份验证时,我已经将会话设置为第一次。但是如果他改变了个人资料会怎么样呢。或者在他的API中不允许我的网站

我已经用我的个人资料测试过了。如果我允许的话,它可以正常工作。然而,当我从我的隐私设置中删除应用程序时,我仍然可以看到我的图片和姓名等

下面是FBU会话的输出

[id] => id
[name] => Shahmir Javaid
[first_name] => Shahmir
[last_name] => Javaid
[link] => http://www.facebook.com/shahmirj
[about] => I was Born a n00b, I am still a n00b and il never be not a n00b.
[gender] => male
[locale] => en_GB
[verified] => 1
[updated_time] => 2010-11-22T15:45:22+0000
[loginUrl] => https://
[logoutUrl] => https://
[session_key] => xxx
[uid] => xxx
[expires] => 1290448800
[secret] => xxx
[access_token] => xxx
[sig] => xxx

如何重新验证uid以使过期时间恢复,当然不会让用户再次登录?

如果用户更改了他的个人资料图片(这似乎是您在个人资料中使用的所有图片),因为您指向graph.facebook.com/USERID/picture,则会显示更新的图片。您可以使用应用程序设置的“高级”选项卡中的facebook取消授权回调url,在用户删除应用程序时提醒应用程序


如果您存储一个取消授权的id列表并在获取数据之前搜索该列表,那么您可以取消设置会话并从数据库中删除该id,这将再次显示登录url并删除该用户在后端的facebook连接。

所有im存储的都是uid和名称。从
$x=$facebook->api(“/{$\u SESSION['fb\u SESSION']['id']}”)检索配置文件图片但我的观点是,过期的文件。我有点搞不懂这个非自动化回调,Id是否会改变。一旦我有了Id值,如果我执行
$x->api('/Id')
,它是否会停止向我发送数据,因为用户没有删除我
[id] => id
[name] => Shahmir Javaid
[first_name] => Shahmir
[last_name] => Javaid
[link] => http://www.facebook.com/shahmirj
[about] => I was Born a n00b, I am still a n00b and il never be not a n00b.
[gender] => male
[locale] => en_GB
[verified] => 1
[updated_time] => 2010-11-22T15:45:22+0000
[loginUrl] => https://
[logoutUrl] => https://
[session_key] => xxx
[uid] => xxx
[expires] => 1290448800
[secret] => xxx
[access_token] => xxx
[sig] => xxx