Facebook使用PHP SDK登录,getUser()在回调中返回0

时间:2013-12-18 17:37:05

标签: php facebook facebook-graph-api facebook-sdk-3.0

我有一个测试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调用脚本 - 问题就解决了! ...

1 个答案:

答案 0 :(得分:2)

我遇到了这个问题并且头疼了一天。最后,在我写这篇文章时,用当前的sdk v 3.2.3更新了lib / facebook目录,解决了这个问题。