2011-04-13 32 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();')); 
    } 
} 

`