【问题标题】:CodeIgniter, Facebook and Sessions. Getting lots of oAuth Access Token ErrorsCodeIgniter、Facebook 和 Sessions。获取大量 oAuth 访问令牌错误
【发布时间】:2012-12-20 15:37:09
【问题描述】:

我已经使用 CodeIgniter 好几年了。我不会让事情变得太复杂,基本上,我在控制器的构造函数中这样做:

$conf = array ( 'appId' => 'MY APP ID', 'secret' => 'MY SECRET KEY');

$facebook = $this->load->library('facebook/facebook',$conf);

然后,为了让用户登录,我在 facebook 提供的 example.php 上使用相同的方法(获取用户 ID,尝试捕获 API 调用)。 我的控制器构造函数中的所有内容

在使用这种方法的几年中,到目前为止一切正常。上周我编写了一个应用程序,在我过去完成的每个应用程序中编写了基本相同的代码,问题是我收到了很多 oAuth Access Token 错误,准确地说,我收到一条消息说访问令牌已过期,我需要一个新的来查询 facebook API。

所以,我知道我没有提供太多关于我的代码的信息,但我想讨论的是方法而不是代码本身:

您如何在您的应用程序中处理 facebook 登录?您认为我这样做的方式还可以,还是必须在方法中而不是在构造函数中进行?我是否必须将访问令牌保存在数据库中,以便在用户返回应用程序时使用相同的访问令牌?

如果你有一个带有 codeigniter 的示例,那就太好了。

非常感谢您!

P.s:我正在自动加载 CI 会话库,使用 channel.php file with an expire date of a year 并使用 p3p 标头,因此浏览器确实接受 cookie。我真的不知道我错过了什么。 P.s2:“我在stackoverflow中阅读了很多相关问题,我尝试了一些我在这里阅读的建议,但我得到了相同的结果。

【问题讨论】:

    标签: codeigniter facebook-php-sdk facebook-oauth


    【解决方案1】:

    SDK 3.2.1 版本包含一个错误,该错误已在(尚未标记的)3.2.2 版本中修复。将你的 base_facebook.php 文件替换为 github 上的最新版本:

    https://raw.github.com/facebook/facebook-php-sdk/master/src/base_facebook.php

    这次提交:

    https://github.com/facebook/facebook-php-sdk/commit/ca9472b3312dab3fdcfbffb4e45eb091f582dcb7

    引用了“尝试重用已用过的身份验证令牌”的修复。

    这让我发疯了。很可能是图形 API 中存在一个需要更新代码的漏洞,并且从来没有错误......无论如何,它已在最新版本中修复。

    我的codeigniter代码:

    $config['appId'] = '408995679168867';
    $config['secret'] = 'secret';
    $this->load->library('facebook', $config);
    

    然后

    $fbid = $this->facebook->getUser();
    $this->fb_me = $this->facebook->api("/me");
    

    应该在其中包含 try/catch 等,但为了便于阅读,我将其省略了。

    【讨论】:

    • 我已经测试了一段时间,现在看起来一切正常。非常感谢!
    猜你喜欢
    • 2013-04-09
    • 1970-01-01
    • 2012-12-10
    • 2015-05-05
    • 2011-02-28
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多