私は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'));
敬具、 ダニエル