facebook - example - laravel 5.6 guzzlehttp
¿Cómo recibir correos electrónicos de Facebook a través de Guzzle en laravel? (2)
Estoy usando el código a continuación para iniciar sesión a través de Facebook en laravel.
Refiriéndose a https://scotch.io/tutorials/token-based-authentication-for-angularjs-and-laravel-apps para la autenticación basada en token y utilizando https://github.com/sahat/satellizer para la integración de redes sociales.
$params = [
''code'' => $request->input(''code''),
''client_id'' => $request->input(''clientId''),
''redirect_uri'' => $request->input(''redirectUri''),
''client_secret'' => ''XXXXXXXXXXXXXXXXXXX''
/*''client_secret'' => Config::get(''app.facebook_secret'')*/
];
// Step 1. Exchange authorization code for access token.
$accessTokenResponse = $client->request(''GET'', ''https://graph.facebook.com/v2.5/oauth/access_token'', [
''query'' => $params
]);
$accessToken = json_decode($accessTokenResponse->getBody(), true);
// Step 2. Retrieve profile information about the current user.
$profileResponse = $client->request(''GET'', ''https://graph.facebook.com/v2.5/me'', [
''query'' => $accessToken
]);
$profile = json_decode($profileResponse->getBody(), true);
$ perfil que solo devuelve fb id y nombre de usuario. ¿Qué cambios debo hacer para recibir correos electrónicos de Facebook?
Reemplace esto:
''https://graph.facebook.com/v2.5/me''
con este:
''https://graph.facebook.com/v2.5/me?fields=name,email''
Se llama "Campos declarativos", ver changelog.
Además, debe autorizar con el permiso de email
, por supuesto. Y el correo electrónico debe ser confirmado. No puede estar 100% seguro de recibir un correo electrónico, algunos usuarios usan su número de teléfono para iniciar sesión.
También debería verificar esto: https://github.com/sahat/satellizer/issues/615
Use el código a continuación en su paso 2.
$fields = ''id,email,first_name,last_name,link,name'';
$profileResponse = $client->request(''GET'', ''https://graph.facebook.com/v2.5/me'', [
''query'' => [
''access_token'' => $accessToken[''access_token''],
''fields'' => $fields
]
]);