我有一个测试Facebook登录页面example.com/login-fb
它应该处理基本Facebook用户登录,未登录并打印信息(如果可用)。
登录链接生成正常,如果我点击它,它可以正常到Facebook并返回到这个相同的脚本与$ _GET参数 - 我得到这样的东西
example.com/login-fb/?code=AQDgxX7dkmddbaWZbTCfLf063g0aNRuHJG71pTuCmsdXTlQX9JYe1wmPl94KcFG2BkPFjgkAZ8k0_gFcECUINJ59qbOVH9J5AKHVZP5mxQ7K25qPNQW2VHEbe80uhbrHD0QB9QeP8WSr8EdnM3ocadEVqrgXAXTRu2_Q8jBYZpBZp7MrZyg9K9BhCJEiC0xnp9a-mwyMoYtpZKxhjtEAiDwJvcZgUjftRKK-0091aECRozV5gdOSdPrqKBZhsmn5sHsjbOx1zB4z8gj2LGTxQzdaRez3Jxknn6A8wpZp70jilycIdfCBA8c_b35XOg93FTM&state=8e633d68644595d174ad01d0b7aed365#_=_
但是$ facebook-> getUser();始终为0因此它仍然显示LOGIN链接而不是注销链接和用户信息。有什么帮助吗?
代码:(使用Facebook PHP SDK(v.3.2.3))
<?php
//Already REQUIRED: FB-SDK, MyFacebook class, home_url() and the_print_r()
$facebook = new MyFacebook();
$fb_params = array(
'scope' => 'email',
'redirect_uri' => home_url().'/login-fb'
);
$loginUrl = $facebook->getLoginUrl($fb_params);
$logoutUrl = $facebook->getLogoutUrl();
$user = $facebook->getUser();
?>
<?php the_print_r($user); ?>
<?php if ($user) { ?>
Your user profile is
<?php $user_profile = $facebook->api('/me'); ?>
<?php print htmlspecialchars(print_r($user_profile, true)) ?>
LOGOUT:<br><a href="<?php echo $logoutUrl; ?>"><?php echo $logoutUrl; ?></a>
<?php } else { ?>
LOGIN:<br><a href="<?php echo $loginUrl; ?>"><?php echo $loginUrl; ?></a>
<?php } ?>
最后,我想知道为什么origanl Facebook SDK的例子正常工作 - 我发现 - 我的代码很精细! - 这只是网址处理问题 - login-fb /?代码被误解,因此没有$ _GET ['code']! - 只需用扩展名 - login-fb.php调用脚本 - 问题就解决了! ...
答案 0 :(得分:2)
我遇到了这个问题并且头疼了一天。最后,在我写这篇文章时,用当前的sdk v 3.2.3更新了lib / facebook目录,解决了这个问题。