我正在使用来自 webtechnick (https://github.com/webtechnick/CakePHP-Facebook-Plugin/) 的 CakePHP-Facebook-Plugin,我在识别用户是否已经在 Facebook 上登录时遇到了一些麻烦。问题是:我登录到 facebook,然后我打开我的网站(localhost.localdomain)并且我没有登录。然后我刷新我的网站页面并登录。上面是我正在使用的代码。我已经对其进行了测试,在第一个请求中, $this->Connect->user() 调用返回 false(第一个和第二个),然后呈现页面,我认为 init 或FacebookHelper->login 方法,因为如果我在没有重定向的情况下调用它,它表示我在线并使用我的网站;使用重定向设置,它会显示标签,并且在我登录的第二个请求中。
我试图初始化 FacebookHelper 并在 beforeFilter 上调用“登录”,但没有成功(有和没有重定向)。
此外,显示 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'));
亲切的问候,丹尼尔