【问题标题】:Stuck on Graph API (facebook API), how do i get name, email and sex using this code?卡在 Graph API (facebook API) 上,我如何使用此代码获取姓名、电子邮件和性别?
【发布时间】:2010-11-04 03:01:41
【问题描述】:

嗯,这就是问题所在。我有这段代码,效果很好:

代码

<?php

define('FACEBOOK_APP_ID', 'MY.APP.CODE');
define('FACEBOOK_SECRET', 'MY.APP.SECRET');

function get_facebook_cookie($app_id, $application_secret) {
  $args = array();
  parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
  ksort($args);
  $payload = '';
  foreach ($args as $key => $value) {
    if ($key != 'sig') {
      $payload .= $key . '=' . $value;
    }
  }
  if (md5($payload . $application_secret) != $args['sig']) {
    return null;
  }
  return $args;
}

$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET);

?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:fb="http://www.facebook.com/2008/fbml">
  <body>
    <?php if ($cookie) {
      echo("The ID is: " . $cookie['uid']);
      echo('<br>The profile Picture is: <IMG SRC="http://graph.facebook.com/' . $cookie['uid'] . '/picture?type=large"><br>');
    } else {
      echo('<fb:login-button perms="email,user_birthday,publish_stream,user_status"></fb:login-button>');
    } ?>

    <div id="fb-root"></div>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <script>
      FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true,
               cookie: true, xfbml: true});
      FB.Event.subscribe('auth.login', function(response) {
        window.location.reload();
      });
    </script>
  </body>
</html>

输出

id是:这里是数字图片 是:这里有一张图片

问题

如您所见,此代码在他登录时为我提供了用户的 Facebook ID 和个人资料图片并授予应用程序权限。正如我所说,这段代码工作正常,但我需要更多信息,我如何使用与这段代码相同的逻辑检索电子邮件、性别和姓名?请不要使用外部库(如 facebook.php

请记住,这是一个非常简单的应用程序,所以我不想让它在代码中变得复杂,我知道解决方案与解析 JSON 响应有关,但我找不到任何好的和简单的代码。谢谢!!!!

【问题讨论】:

    标签: php html json facebook graph


    【解决方案1】:

    Graph API 以 JSON 形式返回结果。

    例如

    GET http://graph.facebook.com/4 HTTP/1.1
    

    给予

    {"id":"4","name":"Mark Zuckerberg","first_name":"Mark","last_name":"Zuckerberg","link":"http:\/\/www.facebook.com\/zuck","gender":"male","locale":"en_US"}
    

    这里name是名字; gender 是性。如果您已授予用户电子邮件权限,您也会收到电子邮件。

    【讨论】:

      【解决方案2】:

      您需要根据您需要的数据查看您可能需要请求的所有扩展权限。

      http://developers.facebook.com/docs/authentication/permissions

      【讨论】:

        【解决方案3】:
        'me/friends?fields=gender,name,id'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-06
          • 2018-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多