2010-08-23 4 views
2

Je passe par des documents FB mais je pense que je suis totalement perdu maintenant. Ma tâche est assez simple: j'ai besoin d'un lien "import", l'utilisateur clique dessus et reçoit un popup FB où il autorise le site, l'utilisateur est redirigé vers mon site, j'accède au profil FB de l'utilisateur et récupère des données. Aussi: J'ai besoin d'accéder et de récupérer le profil en PHP.PHP: comment récupérer les données de profil de Facebook

La première partie se passe bien. J'ai créé mysite.com? Page = lien d'importation qui s'ouvre dans le popup, puis redirige vers https://graph.facebook.com/oauth/authorize? ... L'utilisateur permet alors l'accès et la popup est redirigée vers mysite.com? ... # access_token = ... & expires_in = 4031 Ensuite, je vais fermer la fenêtre et à la place rafraîchir la fenêtre parente qui a ouvert cette popup en le redirigeant vers quelque chose comme ça mysite.com? Page =register & access_token = ... & expires_in = 4031 Puis j'allais utiliser leur SDK PHP en espérant qu'il puisse prendre ce jeton d'accès et me permettre d'obtenir les données de l'utilisateur. Cependant, je n'ai pas de chance jusqu'à présent. J'ai essayé beaucoup de choses et je suis passé par facebook.php mais je ne vois pas de solution. S'il vous plaît laissez-moi savoir comment faire: autoriser l'utilisateur dans un popup, puis recueillir les données de profil en php.

+1

Pouvez-vous s'il vous plaît fournir votre code php qui récupère les données utilisateur? – serg

+0

ok, je suis de bonne humeur aujourd'hui, vous obtiendrez le code complet tout de suite;) –

+0

votre réponse est ici :) –

Répondre

0

Voici votre exemple de travail. il a une redirection et fonctionne entièrement en php, je n'ai pas fait javascript parce que c'est plus facile et plus rapide à écrire. La principale différence est que le code renvoyé après la page d'autorisation est uniquement un code qui vous permet d'extraire le jeton d'accès réel avec votre secret client. sinon n'importe qui pourrait obtenir un jeton d'accès pour votre application ou vous devrez passer votre jeton secret dans l'url. c'est la raison de la deuxième étape. en javascript, nous n'avons pas besoin de cela parce que facebook redirige uniquement vers un domaine whitelisted et que le jeton d'accès est dans le fragment de l'URL après la balise # le serveur ne peut y accéder, seul le client. et ceci est garanti pour être le vôtre, car votre domaine doit être ajouté à la liste blanche. mais il faut plus d'interaction client ... bien quand même. vous pouvez utiliser le code que j'ai écrit pour yuo et vous pouvez aussi le faire dans un popup. vous avez juste à passer vos variables à la forme ou quoi que vous fassiez, mais cela ne devrait pas être un problème. Je l'ai fait de cette façon parce que vous avez dit que vous en aviez besoin en php. un bon exemple javascript peut être trouvé sur la page facebook connect ici: http://developers.facebook.com/docs/guides/web#login

des questions? commentaire! Ps: je mets le signe @ devant la fonction file_get_contents parce que vous pourriez gêcher les erreurs ssl, vous devriez utiliser curl pour cela et gérer les erreurs!

Enregistrez ce fichier sous whatever.php à votre serveur, vérifiez les 4 variables de configuration dans le haut et a frappé

<? 
// your app id 
$app_id = "123"; 

// your secret token 
$mysecret = '***'; 

// your website correctly set up in facebook app config 
$redirecturl = "http://www.yourdomain.com/whatever/thisfile.php?action=authorized"; 

// what you want to fetch 
$scopes = array('email','user_interests'); // whatever you want 


if($_GET['action'] == 'authorize') { 
    $url = "https://graph.facebook.com/oauth/authorize?client_id=".$app_id."&redirect_uri="; 
    $url .= urlencode($redirecturl); 
    $url .= "&display=popup"; 
    $url .= "&scope=".implode(',',$scopes); 
    header("Location: $url"); 
    exit(); 
} else if($_GET['action'] == 'authorized') { 
    $code = $_GET['code']; 
    $tokenurl = 'https://graph.facebook.com/oauth/access_token'. 
    '?client_id='.$app_id . 
    '&redirect_uri='.urlencode($redirecturl). 
    '&client_secret='.$mysecret. 
    '&code='.$code; 
    $token = @file_get_contents($tokenurl); 
    $token = preg_match('/access_token=(.*)&/',$token,$extracted_token); 
    $token = $extracted_token[1]; 
    $dataurl = 'https://graph.facebook.com/me?access_token='.$token; 
    $result = @file_get_contents($dataurl); 
    $data = json_decode($result); 
    echo "<pre>".print_r($data,true)."</pre>"; 
} else { 
    ?><a href="?action=authorize">click here to immport your data</a><? 
} 
?> 
+0

Euh ... merci, pour une raison inconnue, je n'ai pas remarqué le https: // graphique .facebook.com/moi ... que je trouve maintenant étrange car il est juste dans le même article où je lis tous les trucs oauth. Pour une raison quelconque après l'obtention du jeton je suis allé jouer avec facebook.php qui utilise probablement une autre implémentation (oauth2?) Et n'a pas réussi à avancer car facebook.php nécessite plus d'infos, comme uid, expire, etc. pour votre aide et désolé pour cette question pas très brillant :) – Eugene

+0

haha ​​lol theres rien de mal à être confus: D –

Questions connexes