2011-10-19 11 views
29

का उपयोग कर फेसबुक उपयोगकर्ता की ईमेल आईडी कैसे प्राप्त करें I फेसबुक के लिए अपना ऐप बनाने के लिए जावास्क्रिप्ट एपीआई का उपयोग कर रहा हूं। समस्या यह है कि यह
email = undefined लौटा रहा है।जावास्क्रिप्ट एसडीके

मुझे नहीं पता क्यों? और यदि मैं अपने ऐप पर फेसबुक लॉगिन/लॉगआउट बटन का उपयोग करता हूं तो अलर्ट उपयोगकर्ता की सही ईमेल आईडी दिखाता है लेकिन मैं ऐसा नहीं करना चाहता हूं। मुझे क्या याद आ रही है?

<p><fb:login-button autologoutlink="true" perms="user_about_me,email"></fb:login-button></p> 

<script> 
window.fbAsyncInit = function() { 
    FB.init({ appId: '250180631699888', status: true, cookie: true, 
    xfbml: true 
}); 

    FB.getLoginStatus(function (response) { 
    if (response.session) { 
     greet(); 
    } 
    }); 
}; 
(function() { 
    var e = document.createElement('script'); 
    e.type = 'text/javascript'; 
    e.src = document.location.protocol + 
    '//connect.facebook.net/en_US/all.js'; 
    e.async = true; 
    document.getElementById('fb-root').appendChild(e); 
}()); 

function greet() { 
    FB.api('/me', function (response) { 
    alert('Welcome, ' + response.name + "!"); 
    alert('Your email id is : '+ response.email); 
}); 
} 
</script> 

उत्तर

8

फेसबुक पेज आप perms के बजाय 'विषय-क्षेत्र' का उपयोग करना चाहिए के बारे में नवीनतम जानकारी के अनुसार:

यहाँ मेरी कोड है। https://developers.facebook.com/docs/reference/javascript/FB.login/

आप

https://developers.facebook.com/tools/console/

जाएँ और अमेरिकन प्लान-api का उपयोग करते हैं - एक प्रारंभिक बिंदु के रूप में> उपयोगकर्ता के जानकारी उदाहरण है, तो लॉगआउट करके पुन: वापस, तो यह आपको ईमेल perms के लिए पूछना चाहिए और आप अपना ईमेल मुद्रित देख सकते हैं। जैसा कि आप अपनी पोस्ट में उल्लेख करते हैं, प्रतिक्रिया.मेल का उपयोग करके किया जाता है।

+0

आपके उत्तर के लिए धन्यवाद, मेरे पास एक और सवाल है कि ईमेल आईडी कैसे प्राप्त करें जिसमें उपयोगकर्ता लॉग इन है? अन्य ईमेल आईडी भी एक प्रोफ़ाइल से संबंधित हैं ... – user958414

+0

आपको उपयोगकर्ताओं के बजाय अपने ऐप्स एक्सेस टोकन का उपयोग करना होगा और फिर उस जानकारी को पुनर्प्राप्त करने के लिए इसका उपयोग करना होगा जिसकी आपको आवश्यकता है – TommyBs

0

आपके समाधान के साथ कुछ चीजें गलत हैं। सबसे पहले आप पुरानी प्रमाणीकरण योजना का उपयोग कर रहे हैं। आपको यहां वर्णित नए का उपयोग करना चाहिए: https://developers.facebook.com/docs/reference/javascript/

आपको ओथ जोड़ना होगा: अपने init फ़ंक्शन के लिए सच है, और सुनिश्चित करें कि आपका getLoginStatus नई प्रकार की प्रतिक्रिया ढूंढता है।

जब ऐसा कहा जाता है कि आपको यह सुनिश्चित करने की आवश्यकता है कि आपके पास उपयोगकर्ता ई-मेल देखने के लिए सही अनुमतियां हैं। आप यहां आवश्यक अनुमतियां देख सकते हैं: http://developers.facebook.com/docs/reference/api/user/

आप उनको FB.login फ़ंक्शन का उपयोग करके प्राप्त करते हैं जैसा कि टॉमीबी द्वारा किसी अन्य उत्तर में वर्णित है।

एक बार आपके पास ये विकल्प हो जाने के बाद आप ई-मेल प्राप्त करने के लिए FB.api फ़ंक्शन का उपयोग कर सकते हैं।

12

यहाँ उदाहरण है मैं कैसे उपयोगकर्ता नाम और ई-मेल पुनः प्राप्त:

<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 

<script> 
    $(function() { 
    FB.init({ 
     appId : 'APP_ID', 
     status : true, // check login status 
     cookie : true, // enable cookies to allow the server to access the session 
     xfbml : true // parse XFBML 
    }); 

    FB.getLoginStatus(function(response) { 
     if (response.status == 'connected') { 
     getCurrentUserInfo(response) 
     } else { 
     FB.login(function(response) { 
      if (response.authResponse){ 
      getCurrentUserInfo(response) 
      } else { 
      console.log('Auth cancelled.') 
      } 
     }, { scope: 'email' }); 
     } 
    }); 

    function getCurrentUserInfo() { 
     FB.api('/me', function(userInfo) { 
     console.log(userInfo.name + ': ' + userInfo.email); 
     }); 
    } 
    }); 
</script> 
6
<button id="fb-login">Login & Permissions</button> 

<script> 
document.getElementById('fb-login').onclick = function() { 
    var cb = function(response) { 
    Log.info('FB.login callback', response); 
    if (response.status === 'connected') { 
     Log.info('User logged in'); 
    } else { 
     Log.info('User is logged out'); 
    } 
    }; 
    FB.login(cb, { scope: 'email' }); 
}; 
</script> 

उपयोग इस के लिए अतिरिक्त अनुमति के लिए

अधिक जानकारी के लिए

जाएँ: https://www.fbrell.com/examples/

+0

*, {स्कोप: 'ईमेल'} *, बचाया जीवन कई कोशिश की ... केवल यह समाधान मेरे लिए काम किया। – Vikrant

82
// https://developers.facebook.com/docs/javascript/reference/FB.api/ 
// v2.4 

FB.api('/me', { locale: 'en_US', fields: 'name, email' }, 
    function(response) { 
    console.log(response.email); 
    } 
); 
+0

यह मेरी मदद करता था – Benjamin

+0

एफबी लोग क्यों घूमते रहते हैं ....?!?!? टीएक्स @masakielastic! यह घंटों तक रहा है, जब तक मैं आपका जवाब पाता हूं! –

0

इस कोड में मुझे उपयोगकर्ता डेटा फॉर्म फेसबुक मिला है और मेरे डेटाबेस में स्टोर है जी AJAX

FB.login(function(response) { 
      if (response.authResponse) { 
     FB.api('/me?fields=email,name,first_name,last_name', function(response) 
     { 
      FB.api(
      "/"+response.id+"/picture?height=100", 
            function (responses) { 
             //console.log(responses.data.url) 
                response['profile_pic']=responses.data.url; 
             $.ajax({ 
                type:"POST", 
                url:'<?php echo base_url(); ?>'+'home/facebook_get_signup', 
                data:response, 
                success:function(res) 
                { 
                 if(res=='success') 
                 { 

                  window.location='<?php echo base_url(); ?>'; 
                 } 
                 if(res=='exists') 
                 { 
                  window.location='<?php echo base_url(); ?>'; 
                 } 
                } 
               }); 

            } 
           ) 
     }); 
     } else { 
     console.log('User cancelled login or did not fully authorize.'); 
     } 
     // handle the response 
     }, {scope: 'email,user_likes'}); 
संबंधित मुद्दे