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 .

alt text

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

È stato utile?

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/ .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top