Utilizzando Facebook Graph API da un'applicazione mobile
-
14-10-2019 - |
Domanda
Ho un piccolo gioco di carte Facebook (e qualche russo social network), che ottiene id dell'utente, nome e avatar attraverso il vecchio REST API.
Ora sto cercando di sviluppare lo stesso gioco come applicazione mobile con il Flex Eroe SDK per Android e iPhone. Il che significa che non posso usare SDK nativo per queste piattaforme, ma è necessario utilizzare OAuth nel modo descritto Facebook pagina .
Sto cercando di scrivere un breve script PHP, che restituirebbe le informazioni utente in formato XML al mio app mobile. Il mio script può ottenere il token già:
<?php
define('FB_API_ID', 'XXX');
define('FB_AUTH_SECRET', 'XXX');
$code = @$_GET['code'];
# this is just a link for me, for development puposes
if (!isset($code)) {
$str = 'https://graph.facebook.com/oauth/authorize?client_id=' . FB_API_ID .
'&redirect_uri=http://preferans.de/facebook/mobile.php&display=touch';
print "<html><body><a href=\"$str\">$str</a></body></html>";
exit();
}
$req = 'https://graph.facebook.com/oauth/access_token?client_id=' . FB_API_ID .
'&redirect_uri=http://preferans.de/facebook/mobile.php&client_secret=' . FB_AUTH_SECRET .
'&code=' . $code;
$ch = curl_init($req);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$page = curl_exec($ch);
if (curl_errno($ch))
exit('Download failed');
curl_close($ch);
parse_str($page, $data);
#header('Content-Type: text/xml; charset=utf-8');
#print('<?xml version="1.0"? ><app>');
print_r($data);
#print('</app>');
?>
Questo funziona bene e torno il token:
Array
(
[access_token] => 262578703638|2.OwBuoa2fT5Zp_yo2hFUadA__.3600.1294904800-587287941|ycUNaHVxa_8mvenB9JB1FH3DcAA
[expires] => 6697
)
Ma come posso usare questo token ora per trovare il nome dell'utente e avatar e soprattutto Sono confuso da come posso ottenere l'ID utente corrente?
Durante l'utilizzo di API REST ho sempre saputo l'id utente corrente da $userid=$fb->require_login()
chiamando
Soluzione
vedi Documentazione in: http://developers.facebook.com/docs/api
Usa curl per richiesta: https://graph.facebook.com/me/?access_token = XXXXXXX
Il "/ me" ti porterà tutte le informazioni necessarie.
$req = 'https://graph.facebook.com/me/?access_token=' . $access_token;
$ch = curl_init($req);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$page = curl_exec($ch);
if (curl_errno($ch))
exit('Download failed');
curl_close($ch);
$user_object = json_decode($page);
var_dump($user_object);
Tornerà qualcosa del tipo:
object(stdClass)#1 (20) {
["id"]=>
string(10) "1017193642"
["name"]=>
string(19) "Lance Scott Rushing"
["first_name"]=>
string(5) "Lance"
["middle_name"]=>
string(5) "Scott"
["last_name"]=>
string(7) "Rushing"
["link"]=>
string(36) "http://www.facebook.com/LanceRushing"
.....
Altri suggerimenti
Poiché non posso aggiungere commenti Le rispondo qui.
Al fine di ottenere l'immagine del profilo è necessario richiedere https://graph.facebook.com/ID/picture
. Se si desidera che solo i campi specifici è possibile specificare in questo modo: https://graph.facebook.com/ID?fields=uid,name,etc&access_token=token
In alternativa si può usare il PHP SDK per autorizzare ed effettuare il login l'utente in modo che non c'è bisogno di ottenere il token manualmente - sarebbe semplificare il codice. Per esempio, invece di ogni richiesta cURL si può solo fare $facebook->api(request);
Una descrizione buon esempio e sono qui http: // apps. facebook.com/graphapidemo/ .