【问题标题】:Facebook PHP SDK misbehaving after December '12 updatesFacebook PHP SDK 在 '12 年 12 月更新后行为不端
【发布时间】:2012-11-24 13:04:00
【问题描述】:

我正在使用 PHP(带有 js)SDK 在我的网站周围进行身份验证。 到目前为止,我从来没有遇到过访问令牌的问题,并且一切都运行顺利。 自从推送了最新更新以来,我收到了很多:

致命错误:未捕获的 OAuthException:必须使用活动访问令牌来查询有关当前用户的信息。在第 1106 行扔进 /home/content/54/9505854/html/src/fb/base_facebook.php

只要有对 API 的 PHP 调用,访问令牌似乎就会失效(或无法恢复)。我做了一个简单的页面,它总是按预期简单地返回当前的访问令牌:

//Facebook PHP SDK
require_once 'src/fb/facebook.php'; 

//Config
$facebook = new Facebook(array(
  'appId'  => '...id...',
  'secret' => '...secret...',
));

$accessToken = $facebook->getAccessToken();
die($accessToken); 

如果在 javascript 身份验证后立即加载此页面仍然有效,但任何离开此页面的导航(或实际上是刷新)此脚本都会以 [appID]|[secret] 形式的字符串返回 appID 和密码

基本上,对 Facebook 对象的任何调用都会使下一页导航未经身份验证。

另外,我目前没有将检索到的访问令牌存储为 cookie 或 mySQL。我应该吗?

对问题或解决方案的任何见解都会非常有帮助!谢谢

【问题讨论】:

    标签: facebook facebook-javascript-sdk oauth-2.0 facebook-php-sdk


    【解决方案1】:

    这是一个 Facebook 错误。描述可以在这里找到:https://developers.facebook.com/bugs/404450666302585

    【讨论】:

      【解决方案2】:

      此问题现已修复。更新到最新版本的 PHP-SDK (v3.2.2)。

      【讨论】:

        【解决方案3】:

        我正在使用 php-sdk "3.2.0" 得到同样的错误..

        根据上面提到的新 PHD-sdk https://github.com/facebook/facebook-php-sdk/commit/ca9472b3312dab3fdcfbffb4e45eb091f582dcb7

        我添加了以下代码-sn-p,它从缓存中获取保存的访问令牌,而不是使用相同的代码调用新的访问令牌。

        if ($code && $code == $this->getPersistentData('code')) {
                  // short-circuit if the code we have is the same as the one presented
                  return $this->getPersistentData('access_token');
        } 
        

        现在,它返回的是缓存访问令牌,而不是 [appID]|[secret] 一个。 它对我有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多