Facebook php sdk:getSessionFromRedirect返回null
我用的是Phalcon。访问路由时调用以下函数:/registration/facebook/access:Facebook php sdk:getSessionFromRedirect返回null,php,facebook,sdk,phalcon,Php,Facebook,Sdk,Phalcon,我用的是Phalcon。访问路由时调用以下函数:/registration/facebook/access: public function facebookAccess() { $app = new FacebookApp($this->config); $app->initialize(); $loginUrl = $app->getRegistrationLink($this->fbRedirectUrl); $this->
public function facebookAccess()
{
$app = new FacebookApp($this->config);
$app->initialize();
$loginUrl = $app->getRegistrationLink($this->fbRedirectUrl);
$this->view->setVar('loginUrl', $loginUrl);
}
$app->initialize()使用我的应用id和密码调用会话_start()和FacebookSession::setDefaultApplication。链接显示正确。当我点击链接时,我会被重定向到/registration/facebook/process:
public function facebookProcess()
{
$app = new FacebookApp($this->config);
$app->initialize();
if (!$app->startSession($this->fbRedirectUrl))
{
if ($app->getSessionError())
$this->dispatchError($app->getSessionError());
else
$this->dispatchErrorStub('FACEBOOK_SESSION_INVALID');
return;
}
$fbData = $app->getUser();
if (!$fbData->save())
{
$this->dispatchErrorOn($fbData);
return;
}
$this->view->setVar('fbData', $fbData);
}
其中startSession的定义如下:
public function startSession($redirectUrl)
{
$helper = new FacebookRedirectLoginHelper($redirectUrl);
try
{
$this->session = $helper->getSessionFromRedirect();
$this->sessionError = false;
if (!$this->session)
return false;
return true;
}
catch(Exception $ex)
{
$this->session = false;
$this->sessionError = $ex->getMessage();
return false;
}
}
但是返回的会话总是正确的。昨天代码运行得很好,我只是做了一些重构。无法解决问题。它自己解决了,什么也不做。。。我仍然不知道出了什么问题。您的控制器中是否定义了
startSession
方法?不,它在实用程序类中。尽管如此,我还是尝试在控制器中直接使用代码,但结果是一样的。