使用Facebook API获取用户详细信息

时间:2014-12-13 04:22:56

标签: facebook api facebook-javascript-sdk

我使用此功能获取Facebook用户详细信息

    <script>
      function statusChangeCallback(response) {
        console.log('statusChangeCallback');
        console.log(response);
        if (response.status === 'connected') {
          testAPI();
        } else if (response.status === 'not_authorized') {
          document.getElementById('status').innerHTML = 'Please log ' +
            'into this app.';
        } else {
          document.getElementById('status').innerHTML = 'Please log ' +
            'into Facebook.';
        }
      }

      function checkLoginState() {
        FB.getLoginStatus(function(response) {
          statusChangeCallback(response);
        });
      }

      window.fbAsyncInit = function() {
      FB.init({
        appId      : 'I enter here my aplication ID',
        cookie     : true,  
        xfbml      : true,  
        version    : 'v2.1' 
      });
      FB.getLoginStatus(function(response) {
        statusChangeCallback(response);
      });

      };

  (function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));

      function testAPI() {
        console.log('Welcome!  Fetching your information.... ');
        FB.api('/me?fields=id,first_name,last_name,email,gender,birthday,bio,hometown,education,quotes,cover,work,devices', function(response) {
          console.log('Successful login for: ' + response.name);
          document.getElementById('status').innerHTML =
            'Thanks for logging in, <br /><br />' 
            + response.id + '<br />'
            + response.first_name + '<br />'
            + response.last_name + '<br />'
            + response.name + '<br />'
            + response.email + '<br />'
            + response.gender + '<br />'
            + response.birthday + '<br />'
            + response.bio + '<br />'
            + response.quotes + '<br />'
            + response.location.name + '<br />'
            + response.hometown.name + '<br />'
            ;
        });
      }

    </script>
    <fb:login-button scope="public_profile,email, user_birthday, user_hometown, user_location, user_likes, user_activities, user_education_history, user_work_history, user_about_me" onlogin="checkLoginState();" data-auto-logout-link="true">
    </fb:login-button>

但是只有我这样才能创建这个应用程序

对于其他用户,某些字段未定义

前生日,生物,报价,地点,家乡,教育,工作

以这种方式为我输出(谁创建应用程序ID)

感谢您登录,

677362262358935

潘卡尔

Deep Panchal

panchaldeep009@gmail.com

雄性

1997年10月15日

Web Developer,Programmer,Electronics&amp;通讯工程师。

生活在真理中,

印度古吉拉特邦Vagra

印度古吉拉特邦Vagra

但是对于其他用户

感谢您登录,

XXXXXXXXXXXXXX(id)

名字

名字

名称

email@mail.com

雄性

未定义(生日)

undefined(bio)

undefined(quotes)

undefined(家乡)

未定义(位置)

2 个答案:

答案 0 :(得分:1)

它仅适用于您的用户,因为您必须已授权应用程序,范围定义您的应用程序可以访问哪些数据,其他字段显示未定义,因为该应用程序没有权限。

请检查:https://developers.facebook.com/docs/facebook-login/permissions/v2.2

答案 1 :(得分:1)

为了使这些其他权限适用于所有人,您需要使用扩展权限进行审核:https://developers.facebook.com/docs/apps/review/login

https://developers.facebook.com/apps/[APP-ID]/review-status/

...然后点击&#34;开始提交&#34;。这些权限需要获得Facebook的批准,否则它们只适用于在App(管理员,开发人员,测试人员)中担任角色的用户。