我正在通过这个Facebook的例子工作:Getting Access Token From The JavaScript SDK Example
我能够通过JS获得Facebook登录部分 . 但我希望从PHP获取用户ID和访问令牌,以用于服务器端操作,例如添加,删除等 .
这是我的JS部分工作正常:
function fb_login() {
FB.login(function(response) {
if (response.authResponse) {
$.post("actions.php?js-login").done(function(data){
console.log(data);
});
init_app();
} else {
alert('User cancelled login or did not fully authorize.');
}
});
}
这是PHP方面似乎无法识别JS应该传输的cookie或会话:
if (isset($_GET['js-login'])) {
$helper = $fb->getJavaScriptHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if (! isset($accessToken)) {
echo 'No cookie set or no OAuth data could be obtained from cookie.';
exit;
}
// Logged in
echo '<h3>Access Token</h3>';
var_dump($accessToken->getValue());
$_SESSION['fb_access_token'] = (string) $accessToken;
exit;
}
我明白了
无法设置cookie或无法从cookie获取OAuth数据 .
消息,但用户是由JS登录的 .
1 回答
您需要确保使用 . 初始化JavaScript SDK
选项集 . 例如:
如果您未设置此选项,则不会设置Facebook cookie,并且PHP SDK将无法从cookie中存在的签名请求中获取访问令牌 .
参考:https://developers.facebook.com/docs/php/howto/example_access_token_from_javascript