【问题标题】:Facebook cookie and oauth 2.0 changesFacebook cookie 和 oauth 2.0 更改
【发布时间】:2012-01-22 03:32:24
【问题描述】:

这个功能曾经对我有用,直到有一天 facebook 决定强制执行一些更改。

    function get_facebook_cookie() {
    $app_id             = '[MyAppID]';
    $application_secret = '[MyAppSecrect]';

    if(isset($_COOKIE['fbs_' . $app_id])){
        $args = array();
        parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
        ksort($args);
        $payload = '';
        foreach ($args as $key => $value) {
                if ($key != 'sig') {
                $payload .= $key . '=' . $value;
                }
        }
        if (md5($payload . $application_secret) != $args['sig']) {
                return null;
        }
        return $args;
        } else {
         return null;
        }
}

我能够像获得 FB 用户访问令牌一样容易

$cookie['access_token']

现在我似乎无法再检索此信息了。

我成功地(轻松地)能够对我的 javascript 代码进行必要的更改,但我在 php 方面有点难过。作为一个快速的旁注,我正在使用 codeigniter,我在尝试让 FB PHP SDK 玩得很好时遇到了很多麻烦,而且我还没有看到任何将 PHP 3 SDK 集成到 codeigniter 的示例,所以我寻找一个快速而肮脏的解决方案,让我能够从 cookie 中获取访问令牌,从而允许我使用以下对 Facebooks API 的调用:

'https://api.facebook.com/method/friends.getAppUsers?access_token=' . $cookie['access_token'];

非常感谢任何帮助。

【问题讨论】:

    标签: php facebook codeigniter oauth-2.0


    【解决方案1】:

    这是因为 facebook 将 cookie 名称从 fbs_ 更改为 fbsr_

    但还有更多变化。关注this steps

    【讨论】:

    • 感谢您的建议。将代码更改为 fbsr_ 会抛出以下 php 错误“消息:未定义索引:sig”,它指的是我上面代码中的这一行“if (md5($payload . $application_secret) != $args['sig']) ”。有什么想法吗?
    • 最好的办法是 var_dump 你的 $args 看看你实际拥有什么。
    • 有更多变化,请检查此建议是否有效:link
    • Kokers - 这个链接就像一个魅力!我之前曾看到过新的 Oauth 2.0 授权码(在 FB 的网站上 -developers.facebook.com/docs/authentication),我曾尝试以类似的方式进行转换,但无法使其正常工作。您提供的链接为我节省了大量时间。如果您想重新发布作为答案,我会接受。
    猜你喜欢
    • 2012-07-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多