Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite meus caros.
Eu li um tutorial na internet que mostra detalhes a respeito da instalação do SDK, plugin de conexão com a conta do usuário do Facebook no site. Até então, estou com problemas para pegar o Email da conta, selecioná-la no banco de dados e fazer a conexão.
<?phpsession_start(); // Sessao do php deve estar ativa // datetimezonedate_default_timezone_set('America/Sao_Paulo'); // autoloader gerado pelo composerrequire_once "./Facebook/autoload.php"; // instancia$fb = new Facebook\Facebook([ 'app_id' => "000000000000000000", 'app_secret' => "0000000000000000000", 'default_graph_version' => 'v2.4']); if(isset($_SESSION['fb_access_token'])) { $accessToken = $_SESSION['fb_access_token']; // verifica validade e expiracao do token $oAuth2Client = $fb->getOAuth2Client(); $tokenMetadata = $oAuth2Client->debugToken($accessToken); // valida token try { $tokenMetadata->validateAppId(APP_ID); $tokenMetadata->validateExpiration(); } catch(Facebook\Exceptions\FacebookSDKException $e) { unset($accessToken); unset($_SESSION['fb_access_token']); }} else { $helper = $fb->getRedirectLoginHelper(); $permissions = ['email']; // optional try { $accessToken = $helper->getAccessToken(); } catch(Facebook\Exceptions\FacebookResponseException $e) { echo 'Graph returned an error: ' . $e->getMessage(); exit; } catch(Facebook\Exceptions\FacebookSDKException $e) { echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; }} if(isset($accessToken)) { // Logged in! $_SESSION['fb_access_token'] = (string) $accessToken; try { $response = $fb->get('/me?fields=id,name,email', $accessToken); $data = $response->getDecodedBody(); $nome = $data['name']; $email = $data['email']; echo "Você está conectado ".$nome.", com o email: ". $email ." !!"; } catch(Facebook\Exceptions\FacebookResponseException $e) { echo 'Graph returned an error: ' . $e->getMessage(); exit; } catch(Facebook\Exceptions\FacebookSDKException $e) { echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; } } else { $helper = $fb->getRedirectLoginHelper(); $redirect_url = $url; $loginUrl = $helper->getLoginUrl($redirect_url); echo '<center><a class="btn btn-primary" href="' . $loginUrl . '" target="_blank"><span><i class="fa fa-facebook"></i>acebook Connect</a></center>';}?>
Ele funciona, e retorna o Nome do usuário do Facebook para o site, mas, não retorna o principal, que é o Email. Eu já tentei aplicar os códigos do SDK do próprio site do Facebook, estudei eles... E enfim, não consigo resolver isso. Já tentei o que sei (básico), mas, não consigo nem chegar ao ponto.
Alguém saberia como fazer tal coisa?
Por favor, ninguém se quer consegue me indicar um caminho?
Ow amigão, obrigado. Eu vou testá-lo e trago-lhe resultados. Eu acabei por me afastar do fórum este mês e não lhe respondi a tempo.
Obrigado novamente.
page session.php >>>
require_once ("config.php"); //Include configuration file.
require "/includes/facebook-php-sdk-v4-4.0-dev/autoload.php"; //include autoload from SDK folder
//import required class to the current scope
try {
$session = $helper->getSessionFromRedirect();
} catch(FacebookRequestException $ex) {
die(" Error : " . $ex->getMessage());
} catch(\Exception $ex) {
//Test normal login / logout with session
if ($session){ //if we have the FB session
//get user data
$user_profile = (new FacebookRequest($session, 'GET', '/me?fields=id,first_name,last_name,email,gender,locale,picture'))->execute()->getGraphObject(GraphUser::className());
//save session var as array
###### connect to user table ########
//check user exist in table (using Facebook ID)
if(!$get_total_rows[0]){ //no user exist in table, create new user
// verifica se email ja existe no BD, caso exista redirecina p/ pagina de logout
else {
//session ver is set, redirect user
header("location: ". $redirect_url);
}else{
//session var is still there
if(isset($_SESSION["fb_user_details"]))
{
// OPCIONAL
else
{
//display login url
config.php>>>
<?php
########## MySql details (Replace with yours) #############
$hostname = "localhost"; //Mysql Hostname
$db_username = "root"; //Database Username
$db_password = ""; //Database Password
$db_name = 'bd_member-001'; //Database Name
###################################################################
########## Alternet cinect mysql. #############
$connect = mysqli_connect($hostname,$db_username,$db_password);
########## app ID and app SECRET (Replace with yours) for Facebook login API #############
$app_id = '000000000000000000000000'; //Facebook App ID
$app_secret = '000000000000000000000000000000'; // Facebook App Secret
$redirect_url = 'http://localhost/projects/'; //path to script folder
$required_scope = 'public_profile, email'; // more permissions : https://developers.facebook.com/docs/authentication/permissions/
?>
index.php >>
arquivos API FACEBOOK SDK >>
https://github.com/facebook/facebook-php-sdk-v4
Lembro que fiquei um dias quebrando a cabeça com isso.. muito chato.