usar home example ejemplos developers consumir con como facebook email facebook-javascript-sdk facebook-apps

home - cómo obtener la identificación de correo electrónico del usuario de Facebook usando javascript SDK



home facebook developers (6)

De acuerdo con la última información en la página de Facebook, debe usar ''alcance'' en lugar de permanentes. https://developers.facebook.com/docs/reference/javascript/FB.login/

Si tú visitas

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

y utilice el ejemplo fb-api -> user-info como punto de partida, luego cierre la sesión y vuelva a iniciarla, le pedirá que confirme su correo electrónico y podrá ver cómo se imprime su correo electrónico. Se hace usando response.email como mencionas en tu publicación.

Estoy usando JavaScript API para crear mi aplicación para Facebook. El problema es que está volviendo
email = undefined

No sé por qué? Y si utilizo el botón de inicio / finalización de sesión de Facebook en mi aplicación, la alerta muestra el id. De correo electrónico correcto del usuario, pero no quiero hacerlo. ¿Qué me estoy perdiendo?

Aquí está mi código:

<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>


En este código, obtengo los datos de usuario de Facebook y los almaceno en mi base de datos usando 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''});


Hay un par de cosas mal con su solución. En primer lugar, está utilizando el antiguo esquema de autenticación. Debería usar el nuevo descrito aquí: https://developers.facebook.com/docs/reference/javascript/

Debe agregar oauth: verdadero a su función init, y asegúrese de que getLoginStatus busque el nuevo tipo de respuesta.

Cuando eso se diga, debe asegurarse de tener los permisos adecuados para ver el correo electrónico de los usuarios. Puede ver los permisos necesarios aquí: http://developers.facebook.com/docs/reference/api/user/

Obtendrá esos mediante el uso de la función FB.login según lo descrito por TommyBs en otra respuesta.

Una vez que tenga esas opciones, puede usar la función FB.api para recibir el correo electrónico.


aquí está el ejemplo de cómo recupero el nombre de usuario y el correo electrónico:

<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>


<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>

Use esto para obtener un permiso adicional

para más detalles, visite: https://www.fbrell.com/examples/


// 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); } );