我正在使用Facebook PHP SDK登录用户,但是当用户从Facebook登录URL返回时,在登录后,$helper->getSessionFromRedirect()
会返回NULL
,而不是使用有效的会话
我已关注Facebook's docs,阅读有关这些类似问题的答案和评论:
我在网络上找到other solutions,我的代码与其他人认为适合他们的解决方案相匹配,但我遗漏了一些东西。
我有自己的Facebook应用设置,并且网站网址和应用领域设置为该应用所在的网址。
我有两页。
首先是“使用Facebook登录”链接。
第二个处理来自Facebook的响应,应该启动用户的会话。
以下是登录页面的代码:
session_start();
// using Composer
require 'vendor/autoload.php';
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
$app_id = 'my_id';
$app_secret = 'my_secret';
$redirect_url = 'my_redirect_url';
FacebookSession::setDefaultApplication($app_id, $app_secret);
$helper = new FacebookRedirectLoginHelper($redirect_url);
$loginUrl = $helper->getLoginUrl();
echo '<a href="' . $loginUrl . '">Login with Facebook</a>';
这是第二页的代码,用于在登录后收到回复,app.php
。
session_start();
require 'vendor/autoload.php';
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
$app_id = 'my_id';
$app_secret = 'my_secret';
$redirect_url = 'my_redirect_url';
FacebookSession::setDefaultApplication($app_id, $app_secret);
$helper = new FacebookRedirectLoginHelper($redirect_url);
$session = $helper->getSessionFromRedirect();
var_dump($helper);
这是我从var_dump($helper)
获得的,最后请注意session: NULL
:
object(Facebook\FacebookRedirectLoginHelper)#2 (6) { ["appId":"Facebook\FacebookRedirectLoginHelper":private]=> string(16) "my_id" ["appSecret":"Facebook\FacebookRedirectLoginHelper":private]=> string(32) "my_secret" ["redirectUrl":"Facebook\FacebookRedirectLoginHelper":private]=> string(32) "my_redirect_url" ["sessionPrefix":"Facebook\FacebookRedirectLoginHelper":private]=> string(6) "FBRLH_" ["state":protected]=> string(32) "a_32_character_string" ["checkForSessionStatus":protected]=> bool(true) } session: NULL
任何帮助都会很棒。这也是我的第一个问题,所以如果我能做任何事情来改进它,请告诉我。