2015-09-07 9 views
5

मैं अपनी वेबसाइट पर उपयोग करने के लिए अमेरिकन प्लान लॉग कोशिश करते हैं और उपयोगकर्ता जानकारियां (ईमेल, public_profile, जन्म और स्थान की तारीख) प्राप्त करने के लिए की जरूरत है। लेकिन केवल नाम और फेसबुक में लॉग इन करने के बाद मुझे मिला उपयोगकर्ता का। कोड:ईमेल गुंजाइश काम नहीं कर रहा है जो अमेरिकन प्लान लॉग में प्रयोग किया जाता है

<img src="" alt="" onclick="fblogin();"/> 

जावास्क्रिप्ट हिस्सा:

function statusChangeCallback(response) { 
     console.log('statusChangeCallback'); 
     console.log(response); 
     // The response object is returned with a status field that lets the 
     // app know the current login status of the person. 
     // Full docs on the response object can be found in the documentation 
     // for FB.getLoginStatus(). 
     if (response.status === 'connected') { 
      // Logged into your app and Facebook. 
      testAPI(); 
     } else if (response.status === 'not_authorized') { 
      // The person is logged into Facebook, but not your app. 
      document.getElementById('status').innerHTML = 'Please log ' + 
       'into this app.'; 
     } else { 
      // The person is not logged into Facebook, so we're not sure if 
      // they are logged into this app or not. 
      document.getElementById('status').innerHTML = 'Please log ' + 
       'into Facebook.'; 
     } 
    } 

    // This is called with the results from from FB.getLoginStatus(). 
    function checkLoginState() { 
     FB.getLoginStatus(function (response) { 
      statusChangeCallback(response); 
     }); 
    } 



    function fblogin() 
    { 
     checkLoginState(); 
     FB.login(function (response) { 
      if (response.authResponse) { 
       console.log('Bilgiler Alınıyor'); 
       FB.api('/me', function (response) { 

        console.log(JSON.stringify(response)); 
       }); 
      } else { 
       console.log('User cancelled login or did not fully authorize.'); 
      } 
     }, { scope: 'user_about_me,email,public_profile' }); 
    } 


    window.fbAsyncInit = function() { 
     FB.init({ 
      appId: '{app-id}', 
      xfbml: true, 
      version: 'v2.4' 
     }); 

     FB.getLoginStatus(function (response) { 
      if (response.status === 'connected') { 
       console.log(response.authResponse.accessToken); 
      } 
     }); 
    }; 

    (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')); 

JSON परिणाम:

{"name":"Name Surname","id":"xxxxxxxxxxxxxxxxx"} 

कोई ईमेल या किसी अन्य जानकारियां।

उत्तर

14

यही है एक अच्छी तरह से ज्ञात मुद्दा, बदलाव का में "घोषणात्मक फील्ड्स" के लिए खोज: https://developers.facebook.com/docs/apps/changelog#v2_4

उदाहरण के लिए:

FB.api('/me?fields=id,name,email', ... 

मेरा मानना ​​है कि आप भी इस तरह यह कर सकते हैं:

FB.api('/me', {fields: 'id,name,email'}, ... 

Btw, सुनिश्चित करें कि आप जानते हैं कि कैसे अतुल्यकालिक जावा स्क्रिप्ट काम करता है, आप, checkLoginState() सही FB.login से पहले बुला रहे हैं बनाने लेकिन FB.getLoginStatus कुछ im वापस नहीं करता है मध्यस्थता और आप हमेशा एफबी.लॉगिन को बुला रहे हैं। यहां एक आलेख है कि FB.login और FB.getLoginStatus को उचित तरीके से कैसे उपयोग करें: http://www.devils-heaven.com/facebook-javascript-sdk-login/

+1

धन्यवाद, यह काम करता है .. – OwnurD

+0

धन्यवाद, अभी भी अक्टूबर 2016 – Tom

+0

धन्यवाद! फेसबुक में लाखों उपयोगकर्ता हैं, लेकिन उनके डेवलपर आदिम मुद्दों को ठीक नहीं कर सकते हैं! मुझे फेसबुक से नफ़रत है। – Webars

संबंधित मुद्दे