我尝试在我的Symfony2应用程序中集成FB功能。
我有一个base.html.twig,我初始化了javascript facebook api:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '{{ fb_appid }}',
xfbml : false,
version : 'v2.1'
});
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/de_DE/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
然后,在我的DefaultController.php中,我想要检索会话,之后是当前登录用户的facebook id:
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\FacebookJavaScriptLoginHelper;
/**
* @Route("/overview", name="_overview")
* @Template()
*/
public function overviewAction()
{
$helper = new FacebookJavaScriptLoginHelper();
try {
$session = $helper->getSession();
} catch(FacebookRequestException $ex) {
// When Facebook returns an error
echo $ex."<br>";
} catch(\Exception $ex) {
// When validation fails or other local issues
echo $ex."<br>";
}
if ($session) {
// Logged in
echo "some";
}else{
echo "none";
}
}
我得到的只是“无”。
我不知道为什么我没有会话,因为javascript方法给了我“连接”状态..所以用户登录到Facebook并允许我的应用程序。
请问有人帮我一点,因为这不应该是一项艰巨的任务吗?!在此先感谢:)
答案 0 :(得分:0)
好的我自己发现:我必须在Fb.init()上配置cookie和状态
window.fbAsyncInit = function() {
FB.init({
appId : '{{ fb_appid }}',
xfbml : false,
version : 'v2.1',
cookie : true,
status : true
});