Comment obtenir les données de l'utilisateur programatically, via l'authentification Facebook?
-
27-10-2019 - |
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
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.