0

我已经开发了一个简单的方法来进行 Facebook 登录,这是代码:

   public function auth()
   {   
      $config = array(
         'appId'  => Configure::read('FB.id'),
         'secret' => Configure::read('FB.secret'),
         'cookie' => true      
      );

      $this->provider = new Facebook($config);

      $user = $this->provider->getUser();

      debug($user);
      debug($_GET['code']);

      if ($user)
        {
            return $user;
      }          

      // Errors?
      if (!isset($this->controller->request->query['error']))
      {
         $params = array(
            'scope'        => Configure::read('FB.scope'),
            'redirect_uri' => Configure::read('FB.callback')
         );

          // Redirect login page
         $this->controller->Session->write('login.redirect', $this->provider->getLoginUrl($params));                                               
      }
        return false;
   }

方法很简单,我是按照 Facebook SDK 的例子来的。

我在检索用户信息时遇到问题,因为当 Facebook 调用我的 redirect_uri 时,我得到了以下参数(查询字符串)

  • 状态
  • 代码

所以,我没有从 Facebook 收到任何错误.....但是 getUser() 仍然返回 0。

为什么?

##### 编辑: #####

这真的太奇怪了......它只有在我使用 facebook 应用程序 uri 更改重定向 uri 时才有效,我更改了:

https://www.mywebsite.com/panel/

https://apps.facebook.com/MY_APP/panel/

它有效....嗯,为什么我必须使用 Facebook URL?

PS我正在使用CakePhp,我知道有插件可以为我完成这项工作,但我也是从CakePhp开始的,所以我会学习编写它的代码。

4

0 回答 0