Приложение Facebook iFrame - как найти текущий город пользователя? - PullRequest
3 голосов
/ 06 мая 2011

Я пытаюсь перенести старое приложение FBML в iFrame, используя новый PHP SDK и GRAPH API, но не могу понять - как найти город посетителя.

Например, в моем профиле на Facebook я перечисляю Текущий город и Родной город :

enter image description here

Но когда я пробую следующее приложение iFrame, местоположение и , родной город не распечатываются, тогда как печатаются другие данные, включая моих работодателей и образование:

<code><?php

include_once 'facebook.php';

$facebook = new Facebook(array(
            'appId'  => "182820975103876",
            'secret' => "XXXXXXX",
            'cookie' => true,
            ));

$session = $facebook->getSession();

if (!$session) {
    $url = $facebook->getLoginUrl();
    print("<script type='text/javascript'>top.location.href = '$url';</script>");

} else {
    try {
        $me = $facebook->api('/me');

        print('<pre>');
        print_r($me);
        print('
'); } catch (FacebookApiException $ e) { print («Ошибка:». $ e); } } ?>

Вот часть данных, которые я вижу для себя, текущего местоположения там нет:

Array
(
    [first_name] => Alexander
    [education] => Array
        (
            [0] => Array
                (
                    [school] => Array
                        (
                            [id] => 106509962720287
                            [name] => Riga Nr. 40
                        )

                    [type] => High School
                )

            [1] => Array
                (
                    [school] => Array
                        (
                            [id] => 103130426393616
                            [name] => RWTH Aachen University
                        )

                    [year] => Array
                        (
                            [id] => 143018465715205
                            [name] => 2000
                        )

                    [type] => College
                )

        )
    [gender] => male
...........
)

С уважением Alex

Ответы [ 2 ]

5 голосов
/ 06 мая 2011

Вам просто необходимы разрешения user_location и user_hometown .

Поэтому ваш логин должен выглядеть примерно так:

$url = $facebook->getLoginUrl(array(
    'scope' => 'user_location,user_hometown'
));
2 голосов
/ 06 мая 2011

это не слишком сложно, вот что вы получаете, когда вызываете fb api (часть кода из примеров в документации FB)

"id": "220439", "name": "Bret Taylor", "first_name": "Bret", "last_name": "Taylor", "link": "http://www.facebook.com/btaylor", "username": "btaylor", "hometown": { "id": "108363292521622", "name": "Oakland, California" }, "location": { "id": "109650795719651", "name": "Los Gatos, California" },

чтобы получить эту информацию, сначала позвоните в api $me = $facebook->api('/me');

как видно из примера, название родного города находится внутри массива "родной город". То же самое касается местоположения (текущего города), находящегося внутри массива "location" .. так что теперь вы делаете

$hometown = $me['hometown']['name']; $current_city = $me['location']['name'];</p> <p>echo 'You are currently living in: '.$current_city.' but your hometown is: '.$hometown</pre> <p>hope it helps man ;)</p> <p>EDIT: <pre> $access_token = $facebook->getAccessToken(); $req_id = $_GET['request_ids']; $req = $facebook->api('/me/?access_token='.$access_token); echo $req['hometown']['name'];

...