我有一个允许用户使用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>";
}
我的facebook_logout.php
看起来像:
header("location:" . $_SESSION['fb_session']['logoutUrl']);
unset($_SESSION['fb_session']);
现在问题是我在验证用户时首先设置了会话。但如果他改变自己的形象会发生什么。或者在他的API中禁止我的网站。
我用我的个人资料对此进行了测试。当我允许时,它工作正常。但是,当我从隐私设置中删除应用程序时,我仍然会看到我的图片和名称等。
以下是fb_session
[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,以便我的到期时间恢复,当然不会让用户重新登录?
答案 0 :(得分:0)
如果用户更改了他的个人资料图片(看起来就是您在配置文件中使用的所有图片),因为您指向graph.facebook.com/USERID/picture,则会显示更新后的图片。您可以使用应用程序设置的高级选项卡中的facebook deauthorize回调URL,在用户删除您的应用程序时提醒您的应用程序。
如果您存储了已授权ID列表并在获取数据之前搜索了该列表,那么您可以取消设置会话并从数据库中删除该ID,这将再次显示登录URL并删除该用户的Facebook连接后端。