CakePHP / Facebook插件-注销按钮链接到#



我正在尝试使用Facebook插件与CakePHP -一切似乎都很顺利-我可以使用喜欢/推荐按钮-我可以通过Facebook登录-它要求许可的事情,我告诉它…等

问题是,我的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),注销按钮只是弹出我到页面的顶部(即-空锚链接)

我目前正在调试同样的问题(加上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,可能是错误的,但似乎如果$选项被填充,例如重定向,但没有img参数,那么屏幕上就没有按钮出现(它转到'HERE')。通过更改上面的代码,我可以得到然后facebook链接显示和FB登出工作。现在我正在调试一个验证问题,其中会话在注销后不断重新生成(没有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();'));
    }
}

"

链接应该以"#"的形式生成。注销函数用一个javascript onclick事件生成这个链接,该事件调用FB并注销用户。我会检查是否有javascript错误。您可以参考源代码进行确认。

最新更新