2011-01-19 20 views
1

私は、facebookに私のウェブサイトを訪れるログインしたFacebookのユーザーの電子メールアドレスをインポートするアプリケーションを開発しようとしています.Yahooのコンタクトインポーターやその他のコンタクトインポーターのようなものです。ログインしたFacebookのユーザーからメールアドレスをインポートしますか?

  1. ユーザー 'X'がFacebookにログインしています。
  2. アプリには友だちのUID(ユーザー 'X'の可能性のある友人)のセットがあります。
  3. これらのUIDの電子メールアドレスを取得したいのですが、UID、誕生日、名前、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') 
    

注:しかし、私は次のように、友人に関連するすべての拡張アクセス権を追加しました私は、開発者のための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> 

答えて

1

あなたはFQL(テーブルのフィールド "email_hashes" "利用者")を介してユーザの友人の電子メールのハッシュを取得することができます。

facebookユーザーにユーザーをバインドする別の方法 - メソッド "検索"(電子メールでFacebookのユーザーを検索できる)を使用する方法。私は同じ問題があったときにそれを使いました。例えば

、このAPIの呼び出し:

/[email protected]&type=user 

リターン:

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

あなたはあなたの電子メールに反復して、彼らがFacebook上で登録されたかどうかを検索することができます。

+0

申し訳ありません私はすべての電子メールの連絡先は、Facebookが電子メールを抽出することはできませんレジスタ –

+0

を確認する必要はありませドン、ログイン後に鉱山のfriendsListから電子メールを抽出する必要があります。あなたは電子メールのハッシュだけを得ることができます。 –

+0

オハイオ州...私はあなたが "自分のウェブサイトからFacebookにログインしたフェイスブックユーザーの電子メールをインポートする"場合、いくつかの電子メールを持っていて、これらの電子メールでFacebookのユーザーを探したいと思った。私があなたを誤解した場合は、あなたの仕事を洗練できますか? –

0

電子メールをパーマに追加します。ユーザーの電子メールアドレスを読むための拡張アクセス権が必要です。すなわち

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) 
+1

thanxしかし、私はすでにパーマに電子メールの許可を加え、私のコードをチェックしています –

関連する問題