我正在使用 FB facebook-php-sdk-v4-5.0-dev.zip API 文件。
我正在尝试让 Facebook javascript 和 php SDK 协同工作。我有 FB.login 工作查找,我可以发出图形请求等。现在我想将访问 token 传递给我的 PHP 代码,然后从那里继续。我正在用 javascript 初始化 FB:
window.fbAsyncInit = function() {
FB.init({
appId : appId, //my appId
cookie : true, // enable cookies for session access
xfbml : true, // parse social plugins on this page
version : 'v2.2' // use version 2.2
});
现在 FB 已经初始化,我使用 API 做一些其他的工作,然后我推送到我的 php 代码:
window.location.replace(<my url>.php);
在我的 PHP 应用程序中,我有以下内容:
$fb = new Facebook\Facebook([ 'app_id' => <my app_id>,
'app_secret' => <my app_secret>
'default_graph_version' => 'v2.2',
]);
$jsHelper = $fb->getJavaScriptHelper();
try
{
$accessToken = $jsHelper->getAccessToken();
}
catch(Facebook\Exceptions\FacebookResponseException $e)
{
// When Graph returns an error
print('Graph returned an error: ' . $e->getMessage() );
exit;
}
catch(Facebook\Exceptions\FacebookSDKException $e)
{
// When validation fails or other local issues
print( 'Facebook SDK returned an error: ' . $e->getMessage() );
exit;
}
if (isset($accessToken))
{
print("Logged in already");
}
else
{
print("Not logged in");
}
我看到的是“未登录”。据我所知,没有生成 cookie(我在 PHP 文件的顶部转储了 $_COOKIE)。我还监控了网络调用,并且在我的 oauth 请求中看不到来自 Facebook 的任何 cookie……我认为这样的 cookie 会来自这里。
谢谢, 安迪
最佳答案
初始化javascript对象时需要将cookie设置为true。否则 FB Javascript Api 将不会存储 cookie。
FB.init({
appId : '{app-id}',
cookie : true,
version : 'v2.5'
});
关于javascript - Facebook javascript登录到PHP SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31735719/