0

我想解码用户的位置。认为

"id": "100000564553314",
"name": "Adi Mathur",
"location": {
      "id": "106487939387579",
      "name": "Gurgaon, Haryana"
}

我正在使用脚本来获取名称,但位置给了我一个错误

不能将 stdClass 类型的对象用作数组

$token_url = "https://graph.facebook.com/oauth/access_token?"
   . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
   . "&client_secret=" . $app_secret . "&code=" . $code;

$response = file_get_contents($token_url);
$params = null;
parse_str($response, $params);

$graph_url = "https://graph.facebook.com/me?access_token=" 
. $params['access_token'];

$user = json_decode(file_get_contents($graph_url));

echo $_SESSION['name']=$user->name;  // WORKS 
echo $_SESSION['fbid']=$user->id;     // WORKS

echo $_SESSION['location']=$user->location[0]; // ERROR
echo $_SESSION['location']=$user->location->name; // ERROR
4

2 回答 2

1

考虑使用:

$user = json_decode(file_get_contents($graph_url), true);

这将确保 $user 是关联数组而不是对象。然后你可以像这样设置你的 $_SESSION 变量:

$_SESSION['name']=$user['name'];
$_SESSION['fbid']=$user['id'];
$_SESSION['location']=$user['location']['name'];
于 2012-04-25T16:01:29.397 回答
1

添加第二个参数assoc,如下true所示json_decode

json_decode(file_get_contents(...),true);

这将返回一个数组而不是一个对象。然后您可以使用数组表示法[]而不是对象运算符->

于 2012-04-25T16:01:31.760 回答