Facebook PHP SDK v4 获取当前 accessToken
Facebook PHP SDK v4 get current accessToken
使用 getSessionFromRedirect()
函数获取 FacebookSession 没问题,但从中返回令牌时遇到问题。
Facebook\FacebookSession::setDefaultApplication(
Config::get('api/facebook/app_id'),
Config::get('api/facebook/app_secret')
);
$fb = new Facebook\FacebookRedirectLoginHelper(Config::get('api/facebook/url'));
if(Session::exists(Config::get('session/facebook'))) {
//echo Session::get(Config::get('session/facebook'));
$session = Session::get(Config::get('session/facebook'));
} else {
$session = $fb->getSessionFromRedirect();
var_dump($session);
//Session::put(Config::get('session/facebook'), $session->getToken());
}
if(isset($session)) {
//Do Facebook stuff here
} else {
$params = array(
'scope' => 'email, user_birthday'
);
echo "<a href='".$fb->getLoginUrl($params)."'>Login</a>";
}
如您所见,我一直在玩弄 FacebookSession 对象,例如 var_dump
ing 它,但我似乎仍然无法获得令牌。我已阅读文档,FacebookSession 对象有一个 getToken()
函数,但它似乎对我不起作用。
这是我在转储会话后得到的结果
object(Facebook\FacebookSession)#9 (2) { ["accessToken":"Facebook\FacebookSession":private]=> object(Facebook\Entities\AccessToken)#4 (3) { ["accessToken":protected]=> string(220) "*INSERT TOKEN HERE, THIS WAS REPLACED FOR THE QUESTION*" ["machineId":protected]=> NULL ["expiresAt":protected]=> NULL } ["signedRequest":"Facebook\FacebookSession":private]=> NULL }
您必须在脚本顶部写 session_start 才能使其正常工作
所以它会像
<?php
session_start();
Facebook\FacebookSession::setDefaultApplication(
Config::get('api/facebook/app_id'),
Config::get('api/facebook/app_secret')
);
实际上我最终弄明白了。我已经有一个初始化文件 运行 session_start()
对我来说不是这样。
Facebook\FacebookSession::setDefaultApplication(
Config::get('api/facebook/app_id'),
Config::get('api/facebook/app_secret')
);
$fb = new Facebook\FacebookRedirectLoginHelper(Config::get('api/facebook/url'));
if(Session::exists(Config::get('session/facebook'))) {
$session = new Facebook\FacebookSession(Session::get(Config::get('session/facebook')));
} else {
$session = $fb->getSessionFromRedirect();
}
if(isset($session)) {
if(!Session::exists(Config::get('session/facebook'))) {
Session::put(Config::get('session/facebook'), $session->getToken());
}
//Do Facebook stuff here
} else {
$params = array(
'scope' => 'email, user_birthday'
);
echo "<a href='".$fb->getLoginUrl($params)."'>Login</a>";
}
因为页面没有刷新,$session
变量还不是一个真正的对象,我只需要在调用isset($session)
后放置它
使用 getSessionFromRedirect()
函数获取 FacebookSession 没问题,但从中返回令牌时遇到问题。
Facebook\FacebookSession::setDefaultApplication(
Config::get('api/facebook/app_id'),
Config::get('api/facebook/app_secret')
);
$fb = new Facebook\FacebookRedirectLoginHelper(Config::get('api/facebook/url'));
if(Session::exists(Config::get('session/facebook'))) {
//echo Session::get(Config::get('session/facebook'));
$session = Session::get(Config::get('session/facebook'));
} else {
$session = $fb->getSessionFromRedirect();
var_dump($session);
//Session::put(Config::get('session/facebook'), $session->getToken());
}
if(isset($session)) {
//Do Facebook stuff here
} else {
$params = array(
'scope' => 'email, user_birthday'
);
echo "<a href='".$fb->getLoginUrl($params)."'>Login</a>";
}
如您所见,我一直在玩弄 FacebookSession 对象,例如 var_dump
ing 它,但我似乎仍然无法获得令牌。我已阅读文档,FacebookSession 对象有一个 getToken()
函数,但它似乎对我不起作用。
这是我在转储会话后得到的结果
object(Facebook\FacebookSession)#9 (2) { ["accessToken":"Facebook\FacebookSession":private]=> object(Facebook\Entities\AccessToken)#4 (3) { ["accessToken":protected]=> string(220) "*INSERT TOKEN HERE, THIS WAS REPLACED FOR THE QUESTION*" ["machineId":protected]=> NULL ["expiresAt":protected]=> NULL } ["signedRequest":"Facebook\FacebookSession":private]=> NULL }
您必须在脚本顶部写 session_start 才能使其正常工作 所以它会像
<?php
session_start();
Facebook\FacebookSession::setDefaultApplication(
Config::get('api/facebook/app_id'),
Config::get('api/facebook/app_secret')
);
实际上我最终弄明白了。我已经有一个初始化文件 运行 session_start()
对我来说不是这样。
Facebook\FacebookSession::setDefaultApplication(
Config::get('api/facebook/app_id'),
Config::get('api/facebook/app_secret')
);
$fb = new Facebook\FacebookRedirectLoginHelper(Config::get('api/facebook/url'));
if(Session::exists(Config::get('session/facebook'))) {
$session = new Facebook\FacebookSession(Session::get(Config::get('session/facebook')));
} else {
$session = $fb->getSessionFromRedirect();
}
if(isset($session)) {
if(!Session::exists(Config::get('session/facebook'))) {
Session::put(Config::get('session/facebook'), $session->getToken());
}
//Do Facebook stuff here
} else {
$params = array(
'scope' => 'email, user_birthday'
);
echo "<a href='".$fb->getLoginUrl($params)."'>Login</a>";
}
因为页面没有刷新,$session
变量还不是一个真正的对象,我只需要在调用isset($session)
后放置它