【问题标题】:OAuth Changes Break getting CookiesOAuth 更改中断获取 Cookie
【发布时间】:2011-12-15 05:23:04
【问题描述】:

使用 PHP,我曾经能够通过执行以下操作为活动用户检索 cookie:

 //Returns an array: ([access_token] =>[base_domain] =>[expires] =>[secret] =>[session_key] =>[sig] =>[uid] =>)
    public static function getFacebookCookies() {
      $args = array();
      parse_str(trim($_COOKIE['fbs_MY_API_KEY'], '\\"'), $args);
      ksort($args);
      $payload = '';
      foreach ($args as $key => $value) {
        if ($key != 'sig') {
          $payload .= $key . '=' . $value;
        }
      }
      if (md5($payload . MY_API_SECRET) != $args['sig']) {
        return false;
      }
      return $args;
}

但这似乎不再起作用。我正在使用 PHP SDK,现在有没有办法获取这些 cookie,还是我运气不好?

【问题讨论】:

    标签: php facebook cookies oauth


    【解决方案1】:

    cookie fbs_APP_ID 现在替换为 fbsr_APP_ID(注意 r)。该值现在是一个签名请求,而不是包含访问令牌。如果您查看docs,则有一个 php 示例可以解析此数据以获取 JSON 数组。

    【讨论】:

    • 我遇到了和上面的 Scott 一样的问题。我已经在我的代码中将 cookie 更改为 fbsr_,但是使用上面 Scott 的示例似乎仍然存在一些问题,因为它抛出了一个 php 错误“Underfined index: sig” - Scott 上面的函数几乎是直接从 FB 的开发人员文档复制而来developers.facebook.com/docs/guides/web/#login 不再有效且尚未更新。知道如何让上面的例子与今天的 Facebook 一起工作吗?
    • @Joshua 该示例在 FB 的文档中已过时。 fbr_APP_ID cookie 中包含的值是一个签名请求。查看上面我的回复中有关已签名请求的链接。本质上,您获取数据部分,对其进行解码,获取“代码”参数并从以下位置请求访问令牌:graph.facebook.com/oauth/access_token? client_id=YOUR_APP_ID&redirect_uri=&client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE。请注意,我和其他人发现您需要将 redirect_uri 参数留空,否则它无法为您提供访问令牌。
    猜你喜欢
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 2013-09-30
    • 2011-11-22
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    相关资源
    最近更新 更多