php - 适用于 PHP 5.3 的 Facebook SDK,可与 Graph API v2.x 一起使用

标签 php facebook facebook-graph-api facebook-php-sdk

我每隔几天就会收到来自 Facebook 的关注通知。

Your app, is making calls to v1.0 of the Graph API which will be deprecated on Thursday, April 30, 2015. Please upgrade your app to v2.0 or later by that date

我已经更新了 JavaScript SDK 以使用 v2.0。

我现有的 Facebook PHP SDK 是 v.3.1.1

问题是,最新的 PHP SDK 需要 PHP 5.4 或更高版本。 但我无法将我现有的 PHP 版本 5.3 升级到 5.4(我的应用程序代码与 PHP 5.4 不兼容)

是否有任何其他旧版本的 Facebook PHP SDK 我可以使用,可以与图形 API v2.0 或更高版本一起使用,并且仍然与 PHP 5.3 兼容?

最佳答案

2020 年我的回答更新 -

我厌倦了 Facebook 首先弃用 PHP 版本,然后弃用其完整的 PHP SDK,我还注意到,使用 Facebook Javascript SDK 可以将虚假的 Facebook 用户 ID 传递到我的 Facebook Canvas 网络应用程序。

所以我编写了一个纯 PHP 解决方案来获取基本的用户信息 - 在服务器端并且不使用任何外部库。

我的脚本基于 Facebook 向所有 Canvas 网络应用程序发送一个 signed_request 参数这一事实。

如果在 PHP 脚本的顶部添加以下行,就可以看到它:

error_log(print_r($_POST, TRUE));

通过解析“signed_request”参数,您将获得一个“oauth_token”,可用于获取“/me”GRAPH API 页面。

这是我的脚本,记得用 Facebook dashboard 中的值替换 APP_ID 和 APP_SECRET:

const APP_ID     = '1234567890';
const APP_SECRET = 'abcdefghijk';

$data            = parse_signed_request($_POST['signed_request']);
$oauth_token     = $data['oauth_token'];
$user_id         = $data['user_id'];
$photo           = "https://graph.facebook.com/$user_id/picture?type=large";

$me = json_decode(file_get_contents("https://graph.facebook.com/me?access_token=$oauth_token"), true);
list($given_name, $family_name) = explode(' ', $me['name'], 2);

# TODO use the $user_id, $given_name, $family_name, $photo in your web app!

function parse_signed_request($signed_request) {
    list($encoded_sig, $payload) = explode('.', strtr($signed_request, '-_,', '+/='), 2);

    $sig  = base64_decode($encoded_sig);
    $data = json_decode(base64_decode($payload), true);

    $expected_sig = hash_hmac('sha256', $payload, APP_SECRET, true);
    if ($sig !== $expected_sig) {
        exit('Wrong sig');
    }

    return $data;
}

关于php - 适用于 PHP 5.3 的 Facebook SDK,可与 Graph API v2.x 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29373860/

相关文章:

json - 如何使用 api 在 Facebook 上发布 gif

python - Facebook API - Insights : Status: 500, 错误代码 1, "An unknown error occurred"随机出现

javascript - 如何循环遍历我/ friend 并为每个用户分配来自 {USERID} 的图片/来自 FB.api 的图片

php - 如何从 IOS 模拟器访问我的服务器 MySql 以快速检索数据

java - 如何使用 facebook 登录并获取用户信息以从 android 应用程序发送我的远程数据库

php - CodeIgniter多维数组存储在mysql数据库单列中

iphone - 使用 Parse 发布 Facebook Timeline 的链接

ios - spritekit 中的 Facebook 登录总是返回已取消

php - 使用 PHP 从 HTML 表中读取数据

php - CSS Sprites 和 PHP 使用动态菜单突出显示不使用循环功能