2011-04-13 48 views
0

我试图使用CakePHP的Facebook插件 - 所有似乎都很好 - 我可以使用像/推荐按钮 - 我可以通过Facebook登录 - 它要求权限的事情,我告诉它...等CakePHP/Facebook插件 - 注销按钮链接到#

的问题是,我的注销按钮即可链接到你在加了#任何网页

所以 - 如果我在的index.php,注销按钮链接到index.php#

我AM包括正确的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

我有同样的问题,但只有与Firefox(3.6版)和IE浏览器。 Chrome运行良好。我还没有找到解决方案,但这有助于我一点:http://stackoverflow.com/questions/6563539/cakephp-facebook-plugin-webtechnick-only-share-working你找到了解决方案戴夫? – Mecalito 2011-10-11 22:16:32

+0

我还没有 - 现在已经关闭Facebook登录 - 相当令人沮丧。 – Dave 2011-10-17 17:49:40

回答

0

链接应该生成作为一个 ”#”。注销功能使用javascript onclick事件生成此链接,该事件调用FB并将用户注销。我会检查你是否得到JavaScript错误。你参考了source code for confirmation

+0

我没有收到任何javascript错误 - 它产生的onclick是:onclick =“FB.logout(function(response){window.location = '/logout '});” – Dave 2011-04-13 21:15:21

+0

这是正确的JavaScript。尝试在干净的浏览器中完成整个身份验证和注销过程。 – Tyler 2011-04-13 21:24:33

+0

什么也没有 - 没有javascript错误,它什么也没有做。尝试了多台电脑,多个浏览器...等。 – Dave 2011-04-13 21:50:25

2

我目前dubugging同样的问题(加1等),以及我发现的是,FacebookHelper.php似乎处理$选项不正确:

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 param,那么没有按钮出现在屏幕上(它会去'这里')。通过改变上面的代码,我可以得到面书链接显示和FB注销工作。现在我正在调试Auth prob,其中会话在注销后保持重新生成(没有FB连接)。

我的 '固定码',仍然在制品和丑是:

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();')); 
    } 
} 

`