1

我已经使用 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 的示例,那就太好了。

非常感谢您!

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

4

1 回答 1

2

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 中存在一个需要更新代码的漏洞,并且从来没有错误......无论如何,它已在最新版本中修复。

我的代码点火器代码:

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

进而

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

应该在那里有 try/catch 等等,但为了便于阅读,我把它留了下来。

于 2012-12-20T18:42:47.560 回答