这是一个奇怪的问题,它适用于某些人,但不适用于其他人。我已经在Facebook上将应用程序设置为公开,因此它不像处于开发者模式或私有状态。
在“使用Facebook登录”的页面上,我有:
session_start();
define('FACEBOOK_SDK_V4_SRC_DIR', 'path/to/facebook');
require("path/to/autoload.php");
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
FacebookSession::setDefaultApplication(1234, 'a1b2c3');
$helper = new FacebookRedirectLoginHelper('http://chronimate.com/facebookResponse.php');
$loginUrl = $helper->getLoginUrl();
echo '<a href="' . $loginUrl . '">Login with Facebook</a>';
然后在facebookResponse.php
我有以下内容;
session_start();
define('FACEBOOK_SDK_V4_SRC_DIR', 'path/to/facebook');
require("path/to/autoload.php");
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
FacebookSession::setDefaultApplication(1234, 'a1b2c3');
$helper = new FacebookRedirectLoginHelper("http://chronimate.com/facebookResponse.php");
try {
$session = $helper->getSessionFromRedirect();
var_dump($session);
} catch(FacebookRequestException $ex) {
} catch(\Exception $ex) {
}
if ($session) {
var_dump($session);
}
对于我和其他一些人,这显示为var_dump($session)
的结果(我在此代码段中删除了accessToken)
object(Facebook\FacebookSession)#9 (2) { ["accessToken":"Facebook\FacebookSession":private]=> object(Facebook\Entities\AccessToken)#3 (3) { ["accessToken":protected]=> string(218) "xxx" ["machineId":protected]=> NULL ["expiresAt":protected]=> NULL } ["signedRequest":"Facebook\FacebookSession":private]=> NULL }
对于其他任何人,他们只得到NULL
。