usuarios obtener informacion example español ejemplos php json facebook facebook-graph-api

php - obtener - graph api facebook español



Facebook Graph API, ¿cómo recibir correos electrónicos de los usuarios? (11)

Abre base_facebook.php Agrega Access_token en la función getLoginUrl()

array_merge(array( ''access_token'' => $this->getAccessToken(), ''client_id'' => $this->getAppId(), ''redirect_uri'' => $currentUrl, // possibly overwritten ''state'' => $this->state), $params);

y Usar alcance para el permiso de correo electrónico

if ($user) { echo $logoutUrl = $facebook->getLogoutUrl(); } else { echo $loginUrl = $facebook->getLoginUrl(array(''scope'' => ''email,read_stream'')); }

Estoy usando la API Graph, pero no puedo encontrar la manera de obtener una dirección de correo electrónico para los usuarios que hayan iniciado sesión.

La introducción a Graph indica que "Graph API puede proporcionar acceso a todos los datos básicos de registro de cuenta que normalmente solicitaría en un formulario de registro para su sitio, incluidos el nombre, la dirección de correo electrónico, la foto de perfil y el cumpleaños".

Todo bien y bien, pero ¿cómo puedo acceder a esa información?

Esto es lo que tengo hasta ahora:

$json = $facebook->api(''/me''); $first = $json[''first_name'']; // gets first name $last = $json[''last_name''];


Asegúrate de que tu aplicación de Facebook esté publicada. Para recibir datos de correo electrónico, public_profile y user_friends, su aplicación debe estar disponible para el público.

Puede desactivarlo más adelante para fines de desarrollo y aún así obtener el campo de correo electrónico.


Asegúrese de especificar completamente el número de versión de la API como algo como "v2.11" y no "2.11"

No estoy seguro de lo que es predeterminado si esto es incorrecto, pero tengo algunos errores extraños tratando de recuperar el correo electrónico cuando me perdí la v .


El correo electrónico en el perfil se puede obtener con permiso extendido, pero supongo que no es posible obtener el correo electrónico utilizado para iniciar sesión fb. En mi aplicación, quería mostrar varias cuentas fb de un usuario en una lista, quería mostrar los correos electrónicos de inicio de sesión de cuentas de fb como un identificador único de las cuentas respectivas, pero no pude quitarlo de fb, todo lo que obtuve fue el correo electrónico principal en el perfil del usuario, pero en mi caso mi correo electrónico de inicio de sesión y mi correo electrónico principal son diferentes.


La única forma de obtener la dirección de correo electrónico de los usuarios es solicitar permisos extendidos en el campo de correo electrónico. El usuario debe permitirle ver esto y no puede obtener las direcciones de correo electrónico de los amigos del usuario.

http://developers.facebook.com/docs/authentication/permissions

Puede hacer esto si está utilizando Facebook connect pasando scope = email en la cadena get de su llamada al cuadro de diálogo Auth.

Recomiendo usar un SDK lugar de file_get_contents, ya que hace que sea mucho más fácil realizar la autenticación Oauth .



Para obtener el correo electrónico del usuario, debe iniciar sesión en el usuario con su cuenta de Facebook utilizando el permiso de email . Utilice para eso el Facebook PHP SDK ( vea en github ) como sigue.

Primero compruebe si el usuario ya ha iniciado sesión:

require "facebook.php"; $facebook = new Facebook(array( ''appId'' => YOUR_APP_ID, ''secret'' => YOUR_APP_SECRET, )); $user = $facebook->getUser(); if ($user) { try { $user_profile = $facebook->api(''/me''); } catch (FacebookApiException $e) { $user = null; } }

Si no es así, puede mostrar el enlace de inicio de sesión solicitando el permiso de email :

if (!$user) { $args = array(''scope'' => ''email''); echo ''<a href="'' . $facebook->getLoginUrl() . ''">Login with Facebook</a>''; } else { echo ''<a href="'' . $facebook->getLogoutUrl() . ''">Logout</a>''; }

Cuando está conectado, el correo electrónico se puede encontrar en la matriz $user_profile .

Espero que ayude !


Puede recuperar la dirección de correo electrónico del perfil del usuario que inició sesión. Aquí está el fragmento de código

<?php $facebook = new Facebook(array( ''appId'' => $initMe["appId"], ''secret'' => $initMe["appSecret"], )); $facebook->setAccessToken($initMe["accessToken"]); $user = $facebook->getUser(); if ($user) { $user_profile = $facebook->api(''/me''); print_r($user_profile["email"]); } ?>


Simplemente agregue estos bloque de código en el retorno de estado, y comience a pasar un objeto de cadena de consulta {}. Para desarrolladores de JavaScript

Después de inicializar tu SDK.

paso 1: // obtener el estado de inicio de sesión

$(document).ready(function($) { FB.getLoginStatus(function(response) { statusChangeCallback(response); console.log(response); }); });

Esto verificará la carga de documentos y verificará su estado de inicio de sesión si los usuarios han iniciado sesión.

Luego se llama a la función checkLoginState , y la respuesta pasa a statusChangeCallback

function checkLoginState() { FB.getLoginStatus(function(response) { statusChangeCallback(response); }); }

Paso 2: le permite obtener los datos de respuesta del estado

function statusChangeCallback(response) { // body... if(response.status === ''connected''){ // setElements(true); let userId = response.authResponse.userID; // console.log(userId); console.log(''login''); getUserInfo(userId); }else{ // setElements(false); console.log(''not logged in !''); } }

Esto también tiene el ID de usuario que se está configurando como variable, luego se llama a un func getUserInfo para buscar información del usuario usando Graph-api.

function getUserInfo(userId) { // body... FB.api( ''/''+userId+''/?fields=id,name,email'', ''GET'', {}, function(response) { // Insert your code here // console.log(response); let email = response.email; loginViaEmail(email); } ); }

Después de pasar el ID de usuario como argumento, la función obtiene toda la información relacionada con ese ID de usuario . Nota: en mi caso, estaba buscando el correo electrónico, ya que me permitía ejecutar una función que puede registrar al usuario solo por correo electrónico.

// iniciar sesión por correo electrónico

function loginViaEmail(email) { // body... let token = ''{{ csrf_token() }}''; let data = { _token:token, email:email } $.ajax({ url: ''/login/via/email'', type: ''POST'', dataType: ''json'', data: data, success: function(data){ console.log(data); if(data.status == ''success''){ window.location.href = ''/dashboard''; } if(data.status == ''info''){ window.location.href = ''/create-account''; } }, error: function(data){ console.log(''Error logging in via email !''); // alert(''Fail to send login request !''); } }); }



// Facebook SDK v5 for PHP // https://developers.facebook.com/docs/php/gettingstarted/5.0.0 $fb = new Facebook/Facebook([ ''app_id'' => ''{app-id}'', ''app_secret'' => ''{app-secret}'', ''default_graph_version'' => ''v2.4'', ]); $fb->setDefaultAccessToken($_SESSION[''facebook_access_token'']); $response = $fb->get(''/me?locale=en_US&fields=name,email''); $userNode = $response->getGraphUser(); var_dump( $userNode->getField(''email''), $userNode[''email''] );