我正在尝试使用带有CakePHP的Facebook插件 - 一切似乎都很顺利 - 我可以使用喜欢/推荐按钮 - 我可以通过Facebook登录 - 它要求允许我告诉它的事情.. .etc
问题是,我的LOGOUT按钮只链接到您正在使用的任何页面以及#
所以 - 如果我在index.php上,注销按钮链接到index.php#
我在正确的位置包含正确的facebook html标记和init()。
有什么想法吗?
这是我的退出按钮代码:
if(!$session->check('Auth.User.id') && !$this->Connect->user('id')) {
echo $this->Html->link('LOGIN', array('controller' => 'users', 'action' => 'login'));
} else {
echo $facebook->logout(array('redirect' => array('controller'=>'users', 'action'=>'logout'), 'label' => 'LOGOUT'));
}
修改
要清楚 - 我不在乎链接是否是#,但是注销按钮什么都不做,除了将浏览器推到顶部。它不会注销,也不会刷新页面。
EDIT2
如果我启动一个全新的浏览器,登录Facebook,然后转到我的网站,它会自动登录我 - 此时,注销按钮完美运行。但是 - 如果我通过我的网站上的用户登录(而不是FB)登录,则注销按钮会将我弹出到页面顶部(即 - 空锚链接)
答案 0 :(得分:2)
我目前正在为同样的问题(另外还有1个)提供服务,我发现FacebookHelper.php似乎错误地处理了$ options:
if((isset($options['redirect']) && $options['redirect']) || $options['custom']){
$options['redirect'] = Router::url($options['redirect']);
$onclick = "logout('".$options['redirect']."');";
if(isset($options['confirm'])){
$onclick = 'if(confirm("'.$options['confirm'].'")){'.$onclick.'}';
}
if($options['img']){
$source = '/Facebook/img/'.$options['img'];
return $this->Html->image($source, array(
'alt' => $options['alt'],
'id' => $options['id'],
'url' => '#',
'onclick' => $onclick));
}
else { /* HERE */
return $this->Html->link($options['label'], '#', array(
'onclick' => $onclick, 'id' => $options['id']));
}
} else {
$source = '/Facebook/img/facebook-logout.png';
return $this->Html->image($source, array(
'alt' => 'Facebook logout',
'url' => '#',
'id' => $options['id'],
'onclick' => 'logout();'));
我不是PHP的专家,可能是错的,但似乎如果填充了$ options,例如重定向,但没有img param,然后屏幕上没有按钮出现(它转到'HERE')。通过更改上面的代码,我可以获得显示的面部书籍链接,并且FB注销可以正常工作。现在我调试一个Auth prob,其中会话在注销后继续重新生成(没有FB连接)。
我的'固定代码',仍然是WIP和丑陋的:
if((isset($options['redirect']) && $options['redirect']) || $options['custom']){
debug($options);
$onclick = "logout('".$options['redirect']."');";
if(isset($options['confirm'])){
$onclick = 'if(confirm("'.$options['confirm'].'")){'.$onclick.'}';
}
if($options['img']){
$source = '/Facebook/img/'.$options['img'];
return $this->Html->image($source, array(
'alt' => $options['alt'],
'id' => $options['id'],
'url' => '#',
'onclick' => $onclick));
}
else {
//Yes it gets here!
$source = '/Facebook/img/facebook-logout.png';
$redirect=$options['redirect'];
return $this->Html->image($source, array(
'alt' => 'Facebook logout',
//'url' => '#',
'url' => $redirect,
'id' => $options['id'],
'onclick' => "logout('$redirect');"));
}
} else {
$source = '/Facebook/img/facebook-logout.png';
return $this->Html->image($source, array(
'alt' => 'Facebook logout',
'url' => '#',
'id' => $options['id'],
'onclick' => 'logout();'));
}
}
`
答案 1 :(得分:0)
链接应生成为“#”。注销功能使用javascript onclick事件生成此链接,该事件将调用FB并将用户注销。我会检查你是否收到了javascript错误。您引用source code for confirmation。