我开发了一个简单的方法来进行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时,我会得到以下参数(querystring)
所以,我没有从Facebook得到任何错误.....但getUser()仍然返回0。
为什么?
#####编辑:#####
真的太奇怪了...只有当我用facebook app uri更改重定向uri时,它才有效,我改变了:
https://www.mywebsite.com/panel/
与
https://apps.facebook.com/MY_APP/panel/
它有效....嗯,为什么我必须使用Facebook URL?
P.S。我正在使用CakePhp,我知道有些插件可以为我做这个Job,但我也是从CakePhp开始的,所以我会学习编写它的代码。