使用codeigniter进行Facebook身份验证(活动访问令牌必须......)

时间:2011-06-02 23:23:59

标签: facebook authentication codeigniter facebook-graph-api

如果我直接在domain.com/someurl.php创建一个页面,我就可以使用FB登录 我将相同的代码(包含html)复制到带有codeigniter的视图文件并转到domain.com/login/someurl.html的那一刻它不起作用。通过它不起作用我的意思是,如果我在登录Facebook后尝试访问/我,我会得到一个例外。

消息显示“必须使用活动访问令牌来查询有关当前用户的信息”... 在我的控制器中,我有我的索引功能,它所做的就是用facebook登录代码加载视图。

我以为我可能做错了但是我从facebook sdk复制了sample.php并将其粘贴到视图文件中,同样的事情发生了。如果我的示例代码复制到在someurl.php文件它,然后按预期工作......给我怀疑这可能是与笨,可能还有一些配置选项我有导致这种行为... <局面/ p>

我一直在查找错误一段时间,并找到了一些资源: http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/

Facebook access_token invalid?

Facebook authentication issue

https://github.com/facebook/php-sdk/wiki/AccessToken 但没有一个建议的修复工作有效。

从样本开始:

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => 'APPID',
  'secret' => 'SHHHH',
));

// Get User ID
$user = $facebook->getUser();

// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}

它不会在视图中工作,我难倒,为什么或为什么没有修正或“预防”,如不使用类型或确保重定向url是相同等的工作。

修改 我试图避免使用domain.com/somefile.php,而是使用像其他每个页面一样的视图文件......

1 个答案:

答案 0 :(得分:0)

其他地方出现了这个问题,比如Elliot Houghin fb / CI图书馆。 我在这里找到了一个教程中记录的解决方案:

http://www.dannyherran.com/2011/02/facebook-php-sdk-and-codeigniter-for-basic-user-authentication/

这个问题可能是由于Elliot的github回购问题上指出的几个问题之一引起的。我尝试了许多建议的“修复”,但似乎有帮助的是没有使用facebook实例作为类属性。在上面的链接尝试教程后,我再次尝试重新安装CI并在函数内部创建了一个facebook实例,然后使用FB SDK进行API调用,并且到目前为止没有任何问题。 带有建议修复的错误报告@

https://github.com/elliothaughin/codeigniter-facebook/issues/5