Использование Facebook Graph API из мобильного приложения - PullRequest
0 голосов
/ 01 января 2011

У меня есть небольшая карточная игра на Facebook (и несколько российских социальных сетей), которая получает идентификатор пользователя, имя и аватар через старый REST API.

Сейчас я пытаюсь разработать ту же игру, что и мобильное приложение, с Flex Hero SDK для Android и iPhone. Это означает, что я не могу использовать собственные SDK для этих платформ, но должен использовать OAuth, как описано на странице Facebook .

alt text

Я пытаюсь написать короткий скрипт PHP, который бы возвращал информацию о пользователе в виде XML в мое мобильное приложение. Мой скрипт уже может получить токен:

<?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>');
?>

Это хорошо работает, и я получаю токен:

Array
(
    [access_token] => 262578703638|2.OwBuoa2fT5Zp_yo2hFUadA__.3600.1294904800-587287941|ycUNaHVxa_8mvenB9JB1FH3DcAA
    [expires] => 6697
)

Но как я могу использовать этот токен сейчас, чтобы найти имя пользователя и аватар, и особенно меня смущает, как я могу получить текущий идентификатор пользователя?

При использовании REST API я всегда знал текущий идентификатор пользователя, вызывая $userid=$fb->require_login()

Ответы [ 2 ]

0 голосов
/ 01 января 2011

Поскольку я не могу добавлять комментарии, я отвечу здесь.

Для того, чтобы получить фотографию профиля, необходимо запросить https://graph.facebook.com/ID/picture. Если вам нужны только определенные поля, вы можете указать это следующим образом: https://graph.facebook.com/ID?fields=uid,name,etc&access_token=token

В качестве альтернативы вы можете использовать PHP SDK для авторизации и входа в систему пользователя, чтобы вам не приходилось получать токен вручную - это упростит ваш код. Например, вместо каждого запроса cURL вы можете просто сделать $facebook->api(request); Хорошее описание и пример здесь http://apps.facebook.com/graphapidemo/.

0 голосов
/ 01 января 2011

См. Документы по адресу: http://developers.facebook.com/docs/api

Используйте curl для запроса: https://graph.facebook.com/me/?access_token=XXXXXXX

"/ me" предоставит вам всю необходимую информацию.

$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);

Вернет что-то вроде:

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"
  .....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...