Facebook iFrame应用程序 - 如何找到用户当前的城市?

Ale*_*ber 3 iframe location facebook facebook-iframe facebook-graph-api

我正在尝试使用新的PHP SDK和GRAPH API 将旧的FBML应用程序迁移到iFrame,但无法弄清楚 - 如何找到访问者的城市.

例如,在我自己的Facebook个人资料中,我列出了当前城市家乡:

在此输入图像描述

但是,当我尝试以下iFrame应用程序时,不打印位置家乡,而打印包括我的雇主和教育在内的其他数据:

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

    } catch (FacebookApiException $e) {
        print("Error:" . $e);
    }
}

?>
Run Code Online (Sandbox Code Playgroud)

以下是我自己看到的数据的一部分,当前位置不存在:

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
...........
)
Run Code Online (Sandbox Code Playgroud)

关心亚历克斯

ifa*_*our 5

你只需要user_locationuser_hometown 权限.

所以你的登录URL应该是这样的:

$url = $facebook->getLoginUrl(array(
    'scope' => 'user_location,user_hometown'
));
Run Code Online (Sandbox Code Playgroud)