简体   繁体   English

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

[英]Facebook login with PHP SDK , getUser() returns 0 in the callback

I have a testing Facebook login page example.com/login-fb it should handle the basic Facebook user is logged in, is not logged in and print info when available. 我有一个测试Facebook登录页面example.com/login-fb它应该处理基本的Facebook用户登录,没有登录和打印信息可用。 Login link generates fine, if I click it, it goes fine to facebook and returns to this same script with a $_GET parameeter - I get something like this 登录链接生成正常,如果我点击它,它可以正常到Facebook并返回到相同的脚本与$ _GET参数 - 我得到这样的东西

example.com/login-fb/?code=AQDgxX7dkmddbaWZbTCfLf063g0aNRuHJG71pTuCmsdXTlQX9JYe1wmPl94KcFG2BkPFjgkAZ8k0_gFcECUINJ59qbOVH9J5AKHVZP5mxQ7K25qPNQW2VHEbe80uhbrHD0QB9QeP8WSr8EdnM3ocadEVqrgXAXTRu2_Q8jBYZpBZp7MrZyg9K9BhCJEiC0xnp9a-mwyMoYtpZKxhjtEAiDwJvcZgUjftRKK-0091aECRozV5gdOSdPrqKBZhsmn5sHsjbOx1zB4z8gj2LGTxQzdaRez3Jxknn6A8wpZp70jilycIdfCBA8c_b35XOg93FTM&state=8e633d68644595d174ad01d0b7aed365#_=_

However $facebook->getUser(); 但是$ facebook-> getUser(); is always 0 thus it still shows the LOGIN link instead of logout link and user info. 始终为0因此它仍然显示LOGIN链接而不是注销链接和用户信息。 any help ? 任何帮助?

THE CODE: (using Facebook PHP SDK (v.3.2.3)) 代码:(使用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 } ?>

SOLVED: 解决了:

Finally I wondered why is the origanl Facebook SDK's example working - and I found out - MY CODE WAS FINE ! 最后我想知道为什么origanl Facebook SDK的例子有效 - 我发现 - 我的代码很精细! - it was just the url handling problem - login-fb/?code was misinterpreted thus there was no $_GET['code']! - 这只是网址处理问题 - login-fb /?代码被误解,因此没有$ _GET ['code']! - simply just call the script with extension - login-fb.php - and the problem is solved ! - 只需用扩展名 - login-fb.php调用脚本 - 问题就解决了! ... ...

I had this issue and scratch my head for a day. 我有这个问题,抓了我一天头。 Finally this issue was resolved by updating the lib/facebook directory with the current sdk v 3.2.3 at the time I write this post. 最后,在我写这篇文章时,用当前的sdk v 3.2.3更新了lib / facebook目录,解决了这个问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM