从登录的Facebook用户导入电子邮件地址?

时间:2011-01-19 17:19:49

标签: facebook

我正在尝试开发一个应用程序,用于将登录我的网站的登录Facebook用户的电子邮件地址导入到Facebook--例如雅虎联系人导入程序和其他联系人导入程序。

  1. 用户'X'已登录Facebook。
  2. App有一组朋友的UID(可能是用户'X'的朋友)。
  3. 我想获取这些UID的电子邮件地址,但只有UID,birthday,name,first_name,last_name出现在查询结果中,并且电子邮件地址显示为NULL。但是,我添加了与朋友相关的所有扩展权限,例如:

    (perms:'publish_stream,read_stream,offline_access,manage_pages,friends_activities,friends_about_me,user_hometown,user_birthday,user_about_me,user_hometown,user_photos,email,manage_friendlists,read_friendlists')
    
  4. 注意:我为开发人员浏览了facebook API,但找不到任何解决方案。

    我的代码:

    <body>
    
    <h1>Login to FaceBook using My Web Application</h1>
    
    <div>
      <button id="login">Log In</button>
      <button id="logout">Log Out</button>
    
      <button id="disconnect">Disconnect</button>
    
    </div>
    
    <div id="user-info" style="display: none;"></div>
    
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    
    <div id="fb-root"></div>
    
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    
    <script>
      // initialize the library with the API key
      FB.init({ apiKey: 'c2e2e62acc6a292c20c63404bcfecb23' });
    
      // fetch the status on load
      FB.getLoginStatus(handleSessionResponse);
    
      $('#login').bind('click', function() {
        FB.login(handleSessionResponse,{perms:'publish_stream,read_stream,offline_access,manage_pages,friends_activities,friends_about_me,user_hometown,user_birthday,user_about_me,user_hometown,user_photos,email,manage_friendlists,read_friendlists'});
      });
    
      $('#logout').bind('click', function() {
        FB.logout(handleSessionResponse);
      });
    
      $('#disconnect').bind('click', function() {
        FB.api({ method: 'Auth.revokeAuthorization' }, function(response) {
          clearDisplay();
        });
      });
    
      // no user, clear display
      function clearDisplay() {
        $('#user-info').hide('fast');
      }
    
      // handle a session response from any of the auth related calls
      function handleSessionResponse(response) {
        // if we dont have a session, just hide the user info
        if (!response.session) {
          clearDisplay();
          return;
        }
    
        FB.api(
          {
            method: 'fql.query',
          query: 'SELECT pic,hometown_location,name,username, uid, email, sex, birthday FROM user WHERE uid=' + FB.getSession().uid
    
          },
          function(response) {  
           var user = response[0];
    
           $('#user-info').html("<img src="+user.pic+"/>"+'<br/>ID: '+user.uid +'<br/>User Name: '+ user.name +'<br/>Email: '+ user.email +'<br/>Birth Day: '+ user.birthday +'<br/>Gender: ' + user.sex+'<br/>Home Town: ' +user.hometown_location['state']).show('fast');
    
          }
        );
    
        // if we have a session, query for the user's profile picture and name
        FB.api(
        {
         method: 'friends.get' 
        },
        function(response) 
        {
    
         $(response).each(function() {
         var userid = this;
         FB.api(
         {
          method: 'fql.query',
          query: 'SELECT uid,name,email,birthday FROM user WHERE uid=' + userid
        },function(response) 
        {
        var user = response[0]
         $('#user-info').append('<br/>ID: '+user.uid+ ', Name: '+user.name+' ,Email: '+user.email); 
    
        });
       });
        }
        );
    
        }
    
    </script>
    
    </body>
    

2 个答案:

答案 0 :(得分:1)

您可以通过FQL获取用户朋友的电子邮件哈希值(表“user”的字段“email_hashes”)。

将用户绑定到Facebook用户的另一种方法 - 使用方法“搜索”(它可以通过电子邮件搜索Facebook用户)。当我遇到同样的问题时,我已经习惯了。

例如,此API调用:

/search?q=pavel@vbnet.ru&type=user

返回:

{
   "data": [
      {
         "name": "Pavel Surmenok",
         "id": "100001653100014"
      }
   ]
}

您可以迭代您的电子邮件并搜索他们是否在Facebook上注册。

答案 1 :(得分:0)

向perms添加电子邮件。您需要扩展权限才能阅读用户的电子邮件地址。即

perms:'email,publish_stream,read_stream,offline_access,manage_pages,friends_activities,friends_about_me,user_hometown,user_birthday,user_about_me,user_hometown,user_photos,email,manage_friendlists,read_friendlists )