在php中获取Facebook用户个人资料数据

时间:2014-01-22 19:07:36

标签: php facebook codeigniter facebook-php-sdk

以下代码应返回登录用户的电子邮件地址。

  <?php


     require_once('facebook-php-sdk/src/facebook.php');
    // Create our Application instance (replace this with your appId and secret).
    $facebook= new Facebook(array(
      'appId' => '2453463636',
          'secret' => '365653656565656',
          'allowSignedRequest' => false,
    ));


    $user = $facebook->getUser();
    print_r($user);
    if ($user) {
      try {
        // Get the user profile data you have permission to view
       // $user_profile = $facebook->api('/me');
        $user_profile = $facebook->api('/me?fields=picture.width(100).height(100),first_name,last_name,username,email');
        echo $user_profile['email'];

      } catch (FacebookApiException $e) {
        $user = null;
 error_log($e);
     print_r($e);
      }
    } else {
     die("failed");
    }

    ?>

而是返回“失败”,print_r($ user)返回0.

真的不知道该怎么做。

在仪表板中:

enter image description here

我已经设置了一个网站平台来查看我的应用。

这个小说: “App Domains”= www.app.com

“网站网址”= http://www.app.com/test

网站网址实际上是应用。我尝试访问getUser等网址中的http://www.app.com/test/fbuser,其中返回0和die子句。

我说错了吗?

修改

我的localhost服务器上的卷曲

enter image description here

“配置命令”也完全不同(见下面的localhost屏幕截图)

enter image description here

远程服务器信息在配置命令

的此blob文本中提到“curl”

2 个答案:

答案 0 :(得分:3)

Codeigniter删除Facebook PHP SDK用于检索OAuth代码参数的$_REQUEST

修复方法是在致电$_GET之前将$_REQUEST复制到$facebook->getUser()

$_REQUEST += $_GET; 
$user = $facebook->getUser();

感谢this SO回答。

答案 1 :(得分:0)

案例1如果用户已登录且仍然获得$ user = 0

我在不同场合遇到过这个问题,但SDK问题并非发生在每个人身上。所以我不确定这里出了什么问题。但我稍微深入了解并找到了解决方案,如下所述。

解决方案:在为此问题尝试多种解决方案后,这对我有用。

在base_facebook.php文件中,找到makeRequest()方法并检查以下Line。

$opts = self::$CURL_OPTS; 

紧接其后,添加此行

$opts[CURLOPT_SSL_VERIFYPEER] = false;  

更多细节可以在这里找到 - http://net.tutsplus.com/tutorials/php/how-to-authenticate-your-users-with-facebook-connect/

案例2 - 如果用户未登录

尝试以下

if($user_id) {
  // User is logged in do action here

} else {

  // No user, print a link for the user to login
  $login_url = $facebook->getLoginUrl();
  echo 'Please <a href="' . $login_url . '">login.</a>';

}