brp*_*paz 5 php cookies facebook logout
我正在使用Facebook连接使用他们的Facebook帐户登录用户的应用程序.
一切正常,但以下情况除外:
在这种情况下,当facebook连接弹出窗口打开时显示"应用程序中的错误".
我发现原因是用户注销时没有删除旧的fbs cookie.我已添加代码以在我的应用程序注销时删除cookie,但cookie不会被删除.
这是我的代码(使用Symfony框架.)
$fbCookie = 'fbs_'.sfConfig::get('app_facebook_application_id');
$cookie = $request->getCookie($fbCookie);
if(!is_null($cookie)){
setCookie($fbCookie," ", time()-3600);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用.cookie保持不变.setCookie函数按预期返回"1".
可能是什么问题?
我很确定我也遇到了麻烦......你需要确保在删除cookie后立即杀死Facebook会话,否则它会弹回来...这是一个例子
// Assuming that $facebook is your facebook object populated with your settings
$facebook = new Facebook(array(
'appId' => FB_APPID,
'secret' => FB_APPSECRET,
'cookie' => true));
$fb_key = 'fbs_'.sfConfig::get('app_facebook_application_id');
set_cookie($fb_key, '', '', '', '/', '');
$facebook->setSession(NULL);
Run Code Online (Sandbox Code Playgroud)
在当前版本的Facebook SDK中,您需要使用
$fb_key = 'fbsr_'.$facebookConfig['app_id'];
setcookie($fb_key, '', time()-3600);
$facebook->destroySession();
Run Code Online (Sandbox Code Playgroud)
我尝试手动清除cookie和会话,但由于某些原因它仍然无法工作(参见Facebook PHP:用户退出Facebook后,他们无法使用其他用户登录我的应用程序).使用上述解决方案最终是有效的.
正如您所说;)这是关于您本地脚本设置的 cookie,而不是 Facebook.com 上的 cookie,所以您的问题是合法的。
我在这里遇到了同样的问题。PHPSDK 不允许您删除 cookie。所以要么你必须在没有cookie的情况下运行整个会话:
$facebook = new Facebook(array(
'appId' => FB_APPID,
'secret' => FB_APPSECRET,
'cookie' => false,
));
Run Code Online (Sandbox Code Playgroud)
或者您将用户重定向到 facebook 的注销 URL:
header('Location: ' . $facebook->getLogoutUrl(array('next'=>URL_AFTER_LOGOUT))');
Run Code Online (Sandbox Code Playgroud)
唯一的问题似乎是用户也从 Facebook 注销了。
如果你可以使用 Javascript 试试这个:
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({appId: '<?php echo FB_APPID;?>', status: true, cookie: true, xfbml: true});
FB.Event.subscribe('auth.logout', function(response) {
window.location.href='YOUR_LOCAL_LOGOUTSCRIPT';
});
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37014 次 |
| 最近记录: |