2011-12-20 30 views
3

私はwebtechnick facebookプラグインを使用しています。webtechnick Facebookログアウトが動作しない

私は、ユーザー

にログインして、それぞれのログイン、ログアウトのための

<?php 
    echo $facebook->login(array('perms' => 'email,publish_stream','size'=>'small')); 
?> 

<?php 
    echo $this->Facebook->logout(); 
?> 

を使用してのFBの詳細を取得するために$fbc =$this->Connect->User();を使用しています。私はログイン後にユーザーの詳細を取得していますが、logout()を実行しても解除されません。

webtechnick fbプラグインバージョン3.1.1を使用しています。助けてください

答えて

2

本当に解決策が見つかりませんでしたので、私の助けはあまり役に立ちません。良いニュースは、あなただけではないということです。

https://github.com/webtechnick/CakePHP-Facebook-Plugin/issues/43

私はあなたを伝えることができますどのようなFacebookのクッキー(fbsr_ {facebook_app_id})が削除されていないか、または再作成し、それがのルートであるされていることです問題。

EDIT

私はここで何が起こっているかが分かっている場合があります。他の夜まで私は.htaccessファイルをセットアップするのに気を使わず、http:/www.example.comとhttp:/example.comの両方が有効でした。

私のFacebookブックアプリケーションでは、example.comをドメインとして設定し、サイトURLをwww.example.comに指定しました。 fbsr_ {アプリのid}クッキーで

、私は私のCakePHPのクッキーは、WWW上であったが、それはhttp://example.comに時々だったことに気づきました。

Facebookのアプリ(wwwを追加してwwwを削除)のURLを変更して再生した後、.htaccessで書き換えルールを実行してwwwを追加または削除しました。私は、Facebookのアプリから完全にappdomainを削除しました。強制的にwww。ドメインに、そして今はすべてが正直です。

だから私はトリックが

  1. にこれは、CakePHPとの両方のことを保証した.htaccess

を経由してWWWのFacebookアプリ

  • 修正正規でアプリケーションドメインを持っていないと思いますfacebookのクッキーは同じドメインに保存されており、ログアウトすると、そのドメインから削除されます。

    希望これは理にかなって...

  • 1

    私はそれがこの記事のためにいくつかの提案のために遅すぎる知っています。それでも後でこの記事を読む人に役立つかもしれないと感じています。

    私もプラグインのログアウトの問題に直面していましたが、アクションが「ログアウト」の場合、プラグインのConnectComponentでセッションの詳細をクリアする機能を変更しました。私にとって

    private function __syncFacebookUser(){ 
    
         if($this->Controller->params['action'] == 'logout') 
          { 
           $this->Controller->Session->delete('FB'); 
           $this->uid = null; 
           $this->Controller->Session->delete('Auth.User'); 
          } 
          else 
          { 
          if(!isset($this->Controller->Auth)){ 
          return false; 
         } 
    
         $Auth = $this->Controller->Auth; 
         if (!$this->__initUserModel()) { 
          return false; 
         } 
         // if you don't have a facebook_id field in your user table, throw an error 
         if(!$this->User->hasField('facebook_id')){ 
          $this->__error("Facebook.Connect handleFacebookUser Error. facebook_id not found in {$Auth->userModel} table."); 
          return false; 
         } 
    
         // check if the user already has an account 
         // User is logged in but doesn't have a 
         if($Auth->user('id')){ 
          $this->hasAccount = true; 
          $this->User->id = $Auth->user($this->User->primaryKey); 
          if (!$this->User->field('facebook_id')) { 
           $this->User->saveField('facebook_id', $this->uid); 
          } 
          return true; 
         } 
         else { 
          // attempt to find the user by their facebook id 
          $this->authUser = $this->User->findByFacebookId($this->uid); 
          //if we have a user, set hasAccount 
          if(!empty($this->authUser)){ 
           $this->hasAccount = true; 
          } 
          //create the user if we don't have one 
          elseif(empty($this->authUser) && $this->createUser) { 
           $this->authUser[$this->User->alias]['facebook_id'] = $this->uid; 
           $this->authUser[$this->User->alias][$this->modelFields['password']] = $Auth->password(FacebookInfo::randPass()); 
           if($this->__runCallback('beforeFacebookSave')){ 
            $this->hasAccount = ($this->User->save($this->authUser, array('validate' => false))); 
           } 
           else { 
            $this->authUser = null; 
           } 
          } 
          //Login user if we have one 
          if($this->authUser){ 
           $this->__runCallback('beforeFacebookLogin', $this->authUser); 
           $Auth->authenticate = array(
            'Form' => array(
             'fields' => array('username' => 'facebook_id', 'password' => $this->modelFields['password']) 
            ) 
           ); 
           if($Auth->login($this->authUser[$this->model])){ 
            $this->__runCallback('afterFacebookLogin'); 
           } 
          } 
          return true; 
         } 
        } 
    } 
    

    は今、FacebookのプラグインはFacebookが接続のために正常に動作している:下記の修正機能です。

    関連する問題