我在我的一个网站上使用Facebook登录使用sdk for PHP。
有时Facebook登录有效,有时却没有。
这是我的index.php:
/// fb login area.....
include("facebook/src/facebook.php");
$facebook = new Facebook(array(
'appId' => '159326560901256',
'secret' => 'c6b30bd2f80747b64d5b1d15a3da9e9c',
));
$user = $facebook->getUser();
$loginUrl = $facebook->getLoginUrl(array(
'scope' => 'email',
'redirect_uri' => 'http://xyz.com/login_fb.php'
));
<a href="<?=$loginUrl?>"><img class="fb_img"
src="images/fb_logo.png" width="153" height="38" /></a>
转到login_fb.php
:
现在登录login_fb.php我得到这个网址:
login_fb.php?code=ASA&S^&*A^S&*A^S&*^A&*ASUAUIYSUIYASIYAUSYUIASA
并在$user
我得到0
/// code for login_fb.php
include("facebook/src/facebook.php");
$facebook = new Facebook(array(
'appId' => '159326560901256',
'secret' => 'c6b30bd2f80747b64d5b1d15a3da9e9c',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
}
catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
$logoutUrl = $facebook->getLogoutUrl(array(
'next' => 'http://minuteville.com/index.php?val=fblogout'
));
为什么不起作用?
答案 0 :(得分:2)
在Facebook SDK中添加以下行并使用getAccessTokenFromCode
,
问题可以解决。
acesss代码过期。因此,通过交换代码获取新的访问代码可以解决问题
$access_code = $facebook->getAccessTokenFromCode($_GET['code']);
答案 1 :(得分:1)
https://developers.facebook.com/docs/howtos/login/server-side-login/#step6
您应该能够使用code参数构建访问令牌以获取用户。这些都写在文档中。