91 votes

Facebook Graph API, comment obtenir les emails des utilisateurs?

J'utilise l'API Graph, mais je ne vois pas comment obtenir l'adresse électronique d'un utilisateur connecté.

L'introduction de Graph indique "L'API Graph peut donner accès à toutes les données d'inscription de compte de base que vous demanderiez normalement dans un formulaire d'inscription pour votre site, y compris le nom, l'adresse électronique, le profil et l'anniversaire".

Tout va bien, mais comment puis-je accéder à cette information?

C'est ce que j'ai jusqu'ici:

 $json = $facebook->api('/me');

$first = $json['first_name']; // gets first name
$last = $json['last_name'];
 

80voto

Gazler Points 23588

La seule façon d'obtenir les utilisateurs, adresse e-mail de demande de prolongation des autorisations sur le champ e-mail. L'utilisateur doit vous permettre de vous voir, et vous ne pouvez pas obtenir les adresses e-mail de les amis de l'utilisateur.

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

Vous pouvez le faire si vous utilisez Facebook connect en passant portée=e-mail dans la chaîne de votre appel à l'Auth boîte de Dialogue.

Je vous recommande d'utiliser un SDK au lieu de file_get_contents comme il le fait, il est beaucoup plus facile à effectuer, le Protocole d'authentification.

19voto

Kaletha Points 744

// Open base_facebook.php Add Access_token à la fonction getLoginUrl ()

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

et utiliser la portée pour l'autorisation de courrier électronique

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

6voto

Quentin Points 2116

Pour obtenir l'email de l'utilisateur, vous devez vous connecter à l'utilisateur avec son Facebook compte à l'aide de l' email autorisation. Utiliser pour cela le Facebook SDK PHP (voir sur github) de la manière suivante.

Vérifiez d'abord si l'utilisateur est déjà connecté :

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 il son pas, vous pouvez afficher le lien de connexion de demander de l' email autorisation :

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

Lorsqu'il est enregistré dans l'e-mail peut être trouvé dans l' $user_profile tableau.

Espérons que ça aide !

4voto

Yash Kumar Points 255

Vous pouvez récupérer l'adresse email du profil de l'utilisateur connecté. Voici l'extrait de code

La version en direct est ici: http://facebook.init.me/php-get-email-address (clic droit pour ouvrir un nouvel onglet)

 <?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"]);
    }
  ?>
 

1voto

Bobby Jack Points 7574

https://graph.facebook.com/me

vous donnera des informations sur l'utilisateur actuellement connecté, mais vous devrez fournir un jeton oauth. Voir:

http://developers.facebook.com/docs/reference/api/user

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X