我已经开发了一个简单的方法来进行 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开始的,所以我会学习编写它的代码。