Comment obtenir les données de l'utilisateur programatically, via l'authentification Facebook?

StackOverflow https://stackoverflow.com/questions/8365236

Question

Je suis en mesure d'obtenir manuellement les données de l'utilisateur, mais pas programatically.

En utilisant le code côté serveur, comme il est de - https://developers.facebook.com / docs / authentification /

 <?php 

 $app_id = "MY_APP_ID";
 $app_secret = "MY_APP_SECRET";
 $my_url = "ADDRESS_OF_CURRENT_PAGE";

 session_start();
 $code = $_REQUEST["code"];

 if(empty($code)) {
   $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
   $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
     . $_SESSION['state'];

   echo("<script> top.location.href='" . $dialog_url . "'</script>");
 }

 if($_REQUEST['state'] == $_SESSION['state']) {
   $token_url = "https://graph.facebook.com/oauth/access_token?"
   . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
   . "&client_secret=" . $app_secret . "&code=" . $code;

   $response = @file_get_contents($token_url);
   $params = null;
   parse_str($response, $params);

   $graph_url = "https://graph.facebook.com/me?access_token=" 
     . $params['access_token'];

   $user = json_decode(file_get_contents($graph_url));
   echo("Hello " . $user->name);
 }
 else {
   echo("The state does not match. You may be a victim of CSRF.");
 }

 ?>

La sortie est seulement Bonjour, le nom d'utilisateur ne se présente pas!

Je pense que le problème est avec les file_get_contents (), comme l'écho-ing $ réponse n'a pas de sortie, alors que $ token_url a la valeur appropriée.

   $response = @file_get_contents($token_url);
  • Version PHP = 5.2.9
  • rapport d'erreur est désactivée, mais y compris cela dans le code - error_reporting (E_ALL); donne pas de sortie.

UPDATE - Alors, j'ai essayé cela au bout de 6 mois, et cela a fonctionné. La seule chose qui a changé depuis mon hébergement. J'utilisais HostBig avant. Leçon -. Ne pas dépendre de 1 $ / mois les services d'hébergement, ils ne peuvent pas faire confiance

Était-ce utile?

La solution 2

Alors, j'ai essayé cela au bout de 6 mois, et cela a fonctionné. La seule chose qui a changé depuis mon hébergement. J'utilisais HostBig avant.

Il y avait probablement quelque chose de mal avec la configuration PHP HostBig, que les file_get_contents () désactivé.

Mise à jour - j'ai parlé aux gars HostBig, et on m'a dit qu'ils ont allow_url_fopen personnes handicapées, pour des raisons de sécurité, et a suggéré cURL comme alternative plus sûre

.

Autres conseils

Êtes-vous essayer d'exécuter ce code de localhost? Si oui, alors il ne sera pas le travail. Alors que l'enregistrement de votre application sur facebook, vous devez avoir entré le site Web de votre application. Téléchargez le script sur le serveur, modifier votre app_id, secret et l'url du script. Ensuite, essayez de l'exécuter.

Si cela ne fonctionne pas encore, essayez faisant écho à votre $dialog_url et $token_url. Tout d'abord copier manuellement coller votre $dialog_url dans le navigateur et voir quelle erreur il donne. Si elle demande l'authentification, l'authentification de votre application. Il vous revenez à la page. Ensuite, essayez d'exécuter votre $token_url dans le navigateur. Il vous donnera la réponse exacte ce que le serveur vous fournit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top