如果我直接在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?
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,而是使用像其他每个页面一样的视图文件......
答案 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