facebook Uncaught OAuthException的可能重复:必须使用活动访问令牌来查询有关当前用户的信息
但我没有得到适当的解决方案。
我正在使用带有 codeigniter 的 facebook sdk,它工作正常。但有时它会抛出异常 OAuthException:必须使用活动访问令牌来查询有关当前用户的信息。
这是控制器文件的代码
$config = array(
'appId' => 'XXXXXXX',
'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXX',
'fileUpload' => true,
);
$this->load->library('facebook/Facebook', $config);
$fbme = null;
$user = $this->facebook->getUser();
if ($user) {
try {
$fbme = $this->facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
//if user is logged in and session is valid.
if ($fbme){
//do some stuff...
//redirecting to user home page (my site's)
}
在视图文件中,我使用的是 js sdk。查看文件的代码是
<div id="fb-root"></div>
<script type="text/javascript">
var button2;
window.fbAsyncInit = function() {
FB.init({ appId: 'XXXXXXXX',
status: true,
cookie: true,
xfbml: true,
oauth: true});
function updateButton(response) {
button1 = document.getElementById('fb-login'); //login button
button2 = document.getElementById('fb-logout'); //logout button
if (response.authResponse) {
//user is already logged in and connected
button2.onclick = function() {
FB.logout(function(response) {});
};
} else {
//user is not connected to your app or logged out
button1.onclick = function() {
FB.login(function(response) {
if (response.authResponse) {
} else {
//user cancelled login or did not grant authorization
}
}, {scope:'email,user_birthday,user_about_me,user_likes,user_interests,user_education_history,user_work_history'});
}
}
}
// run once with current status and whenever the status changes
FB.getLoginStatus(updateButton);
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
FB.Event.subscribe('auth.logout', function(response) {
window.location.reload();
});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol
+ '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
问题:
有时它会抛出“OAuthException:必须使用活动访问令牌来查询有关当前用户的信息。” 到错误日志文件。
案例:用户登录 facebook 并且已经验证了我的应用程序 如果用户登录 facebook 并验证了我的应用程序并尝试登录到我的网站,而不是将用户重定向到我的网站(php sdk 在这种情况下不起作用) ,它正在加载视图文件。在视图文件中,我也在检查用户是否在 facebook 中登录。(在视图中)如果用户登录它将重新加载页面,相同的控制器脚本将运行并将用户重定向到用户的主页(在这种情况下 php sdk 正在工作。)。
但第一次它不起作用。不知道我在哪里犯错误。
此外,注销按钮(在视图文件中)有时也不起作用。单击它的意思是不会从 facebook 注销用户。(这只发生在我同事的一个浏览器中。她在 Windows 7 中使用 chrome)