我们正在使用旧版本的Facebook connect PHP SDK,我们需要做什么更改才能使应用程序与新更改一起工作(目前该应用程序由于FB应用程序版本更改而无法工作)
更新你的PHP SDK,连接需要改变,getSession()
不再可用,使用getUser()
代替。此外,如果你使用的是太旧的PHP SDK(在Graph API之前),那么你可能不得不更新一些API调用函数。
整体连接如下:
$facebook = new Facebook(array(
'appId' => '111111111',// your appId here
'secret' => '1a1a1a1a1a1a1',// your app secret here
));
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
exit;
}
简短回答:认证流和REST API弃用
长答:自2.1版本以来,有两个主要的版本变化。你应该通过facebook开发者博客来清楚地了解这些变化。
以下部分公告链接:
- 开发者路线图更新:转向OAuth 2.0 + HTTPS 升级到PHP SDK v3.0.0
- 迁移到OAuth 2.0更新:PHP SDK v.3.1.1
使用PHP SDK的新登录流程如下所示:
$facebook = new Facebook(…);
$user = $facebook->getUser();
if ($user) {
// proceed knowing you have a logged in user who's authenticated
} else {
// proceed knowing you require user login and/or authentication
}
如果您正在存储会话密钥,那么它们将不再工作。您需要迁移到使用oauth访问令牌。这个链接讨论了这个过程:将Facebook会话密钥转换为访问令牌
同样,如果你的是一个使用传统auth的canvas应用程序,你需要按照本页所述进行更改:迁移到OAuth 2.0