我正在尝试使用新的PHP SDK和GRAPH API将an old FBML app迁移到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);
}
}
?>
以下是我自己看到的数据的一部分,当前位置不存在:
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
...........
)
此致 亚历
答案 0 :(得分:5)
您只需要user_location
和user_hometown
permissions。
所以你的登录网址应该是这样的:
$url = $facebook->getLoginUrl(array(
'scope' => 'user_location,user_hometown'
));
答案 1 :(得分:2)
"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');
正如您在示例中看到的那样,家乡的名称位于“hometown”数组中。同样适用于位置(当前城市)其内部“位置”数组..所以你现在做的是
$hometown = $me['hometown']['name'];
$current_city = $me['location']['name'];
echo 'You are currently living in: '.$current_city.' but your hometown is: '.$hometown
hope it helps man ;)
EDIT:
$access_token = $facebook->getAccessToken();
$req_id = $_GET['request_ids'];
$req = $facebook->api('/me/?access_token='.$access_token);
echo $req['hometown']['name'];