Login with facebook in javaScript

2

I'm logging in with fb only with js using facebook sdk. The login part is doing it right, but for some reason it just returns me name and id. Not returning email and other attributes I need. My code

<html>
  <body>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'XXXXXXXX', // Set YOUR APP ID
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true,  // parse XFBML
      version    : 'v2.3'
    });
 
    FB.Event.subscribe('auth.authResponseChange', function(response) {
      if (response.status === 'connected') {
        document.getElementById("message").innerHTML +=  "<br>Connected to Facebook";
        //SUCCESS
      }
      else if (response.status === 'not_authorized') {
        document.getElementById("message").innerHTML +=  "<br>Failed to Connect";
        //FAILED
      }
      else {
        document.getElementById("message").innerHTML +=  "<br>Logged Out";
        //UNKNOWN ERROR
      }
    });
  };

  function Login()
  {
    FB.login(function(response) {
      if (response.authResponse) {
        getUserInfo();
      }
      else {
        console.log('User cancelled login or did not fully authorize.');
      }
    },{ scope: 'email, user_about_me, user_birthday, user_hometown' });
  }

  function getUserInfo() {
	     FB.api('/me?fields=name,email,gender,birthday,link', function(response) {
	        console.log(response);
	        var str = "<b>Name</b> : " + response.name + "<br>";
	        str += "<b>Link: </b>" + response.link + "<br>";
	        str += "<b>Username:</b> " + response.username + "<br>";
	        str += "<b>id: </b>" + response.id + "<br>";
	        str += "<b>Email:</b> " + response.email + "<br>";
	        str += "<input type='button' value='Get Photo' onclick='getPhoto();'/>";
	        str += "<input type='button' value='Logout' onclick='Logout();'/>";
	        document.getElementById("status").innerHTML = str;
	     }, { scope: 'email, user_about_me, user_birthday, user_hometown' });
	}
  
  
  function getPhoto() {
    FB.api('/me/picture?type=normal', function(response) {
      var str="<br/><b>Pic</b> : <img src='"+response.data.url+"'/>";
      document.getElementById("status").innerHTML+=str;
    });
  }

  function Logout() {
    FB.logout(function(){document.location.reload();});
  }

  // Load the SDK asynchronously
  (function(d) {
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) {
      return;
    }

    js      = d.createElement('script');
    js.id   = id; js.async = true;
    js.src  = "http://connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
  }(document));
</script>

<div id="fb-root"></div>
<div align="center">
  <h2 style="font-family:VERDANA">SmartPromos Login FB</h2>
  <div id="status">
     <br/>
    <img src="http://donatetab.firstgiving.com/images/fb-login-button.png"style="cursor:pointer;" onclick="Login()"/>
  </div>

  <br/><br/><br/><br/><br/>
  <div id="message">
  
  </div>
</div>
  </body>
</html>
    
asked by anonymous 23.09.2015 / 15:56

1 answer

1

I understood.

At the end of } of FB.login that is in function Login() , put:

,{ scope: 'email, user_about_me, user_birthday, user_hometown' }

Place user_about_me on scope .

Look the way I did some time ago, it worked:

It's a bureaucracy to make use of Facebook Login now. I'll let you know.

You have to have SSL in your hosting.

That is, https .

    
23.09.2015 / 16:11