2012-04-17 5 views
3

私はwebtechnick(https://github.com/webtechnick/CakePHP-Facebook-Plugin/)のCakePHP-Facebook-Pluginを使用しています。ユーザーがすでにFacebookにログインしているかどうかを確認する際に問題が発生します。問題は:私はFacebookにログインしてから、私のウェブサイト(localhost.localdomain)を開き、私はログインしていない。そして私は私のウェブサイトのページをリフレッシュし、私はログインしている。 上記は私が使用しているコードです。私はそれをテストして、最初のリクエストで$ this-> Connect-> user()コールがfalse(最初と2番目のもの)を返した場合、ページがレンダリングされ、initまたはFacebookHelper-> loginメソッド。リダイレクトなしで呼び出すと、私はオンラインで自分のウェブサイトを使用していると言います。Webtechnick CakePHP-Facebook-Pluginはログインしたユーザーを認識するために2回要求する必要があります

私はFacebookHelperを初期化しようとしましたが、beforeFilterで "login"を呼び出そうとしましたが、成功しませんでした(リダイレクトの有無にかかわらず)。

また、facebookのログインまたはログアウトボタンを表示するロジックはbeforeFilterでさらに行われ、$ this-> Session-> check( 'Auth.User.id')の値に基づいて特定のレイアウトを定義します。

27  public function beforeFilter() { 
28 
29   try { 
30    $user = $this->Auth->user(); 
31    $fb_user = $this->Connect->user(); 
32   } catch (FacebookApiException $e) { 
33   } 
34   Configure::write('VertWeb.show_tabs', true); 
35   if ($fb_user = $this->Connect->user()) { 
36    if (!$this->Auth->loggedIn()) { 
37     if (!isset($fb_user['error_code'])) { 
38      $this->loadModel('User'); 
39      $this->User->recursive = -1; 
40      if (($user = $this->User->findByFacebookId($fb_user['id'])) || 
41       ($user = $this->User->findByEmail($fb_user['email']))) { 
42       
43       $this->Auth->login($user); 
44       $this->Session->write('Auth.FacebookUser', $fb_user); 
45       $this->Session->write('Auth.User', $user['User']); 
46       $this->Session->write('Auth.FacebookUserPicture', FB::api('/me?fields=picture')); 

敬具、 ダニエル

答えて

2

私はこの問題を持っていた、私はそれが初期化中にこのラインをputing修正(および起動方法を削除)

if (!$this->noAuth && !empty($this->uid)) { 
    $this->__syncFacebookUser(); 
} 
関連する問題