我环顾四周并尝试了几件事,将其转换为数组并尝试直接访问该对象。
我想取出页面ID,名称和访问令牌。
这是我的代码,用于获取我关注的页面的对象:
$request = new FacebookRequest($session, 'GET', '/'.$userID .'/accounts');
$response = $request->execute();
$graphObject = $response->getGraphObject();
我使用$array = (array) $graphObject;
得到以下数组:
Array([*backingData] => Array(
[data] => Array(
[0] => stdClass Object(
[access_token] => CAAVOhgjThxcBAOZB61QxkxI1qdhZCngNZADQloUasFpTRCoZC7hYiDydjXQ9U0vQIjUMyZAeb6aGLKi7VE1btwk8eOPnsEzxyZPhJV1GVoujWlbb6PHo44yIi3D5VPSBRJJuNUOXobSgQNAevpSDZBgZDZD
[category] => Organization
[category_list] => Array(
[0] => stdClass Object(
[id] => 19850828628
[name] => Organization
)
)
[name] => Side Pot Cavan
[id] => 67433931
[perms] => Array(
[0] => ADMINISTER
[1] => EDIT_PROFILE
[2] => CREATE_CONTENT
[3] => MODERATE_CONTENT
[4] => CREATE_ADS
[5] => BASIC_ADMIN
)
)
[1] => stdClass Object(
[access_token] => CAAVOhgjThxcBAD7t6VU3HJAz9AovBJ7OiNzeFRBEQcHDEyHzRmi8oZBMnUyBQHxqNPeTXZBzWaOhCs2ivNWVvHwi5MGJpAuzgsP3d3cVq4LYZBsxcQQbmB5ufZAct250ZBhfENZCFCZAqAPaWvhGFpI5FzM38PwEIZCIZAtdtcvQZC0gZDZD
[category] => Cause
[name] => James Morgan
[id] => 2773587
[perms] => Array(
[0] => ADMINISTER
[1] => EDIT_PROFILE
[2] => CREATE_CONTENT
[3] => MODERATE_CONTENT
[4] => CREATE_ADS
[5] => BASIC_ADMIN
)
)
[2] => stdClass Object(
[access_token] => CAAVOhgjThxcBAIdnByW9TV7ZAxOnBS42nZAWDFEHeb3hPe5lTEMVwzBuZBMiPB99qOM1ks8VafDxLIZBbZCHe8tkDrtjRcPw8DUtpvnBUsNWvqKxt4y7oub10SgHqxRS194At5HBTLJ0K4vpo7qWaXZCIJwZDZD
[category] => Sports venue
[name] => Galway Poker Festival
[id] => 9751854
[perms] => Array(
[0] => ADMINISTER
[1] => EDIT_PROFILE
[2] => CREATE_CONTENT
[3] => MODERATE_CONTENT
[4] => CREATE_ADS
[5] => BASIC_ADMIN
)
)
我已经在这里编辑了ID和令牌供公众使用。
我确信我只是错过了获得这些价值的下一个技巧。
答案 0 :(得分:1)
您可以使用方法getProperty()
和getPropertyAsArray()
来获取GraphObject的值。如果您想知道有哪些属性,请使用getPropertyNames()
。
由于这是一个数据数组(用户管理多个页面),因此可能更容易将其用作简单数组,就像您尝试的那样 - 有一个名为asArray()
的方法可以确切地说:
$graphObject = $response->getGraphObject();
$data = $graphObject->asArray();
以下是Facebook GraphObject类的参考:https://developers.facebook.com/docs/php/GraphObject/4.0.0
答案 1 :(得分:0)
所以我从上面的答案中得到了一个线索并继续前进:
我完成的代码是:
foreach($ data as $ key => $ value){
if (is_array($value)) {
foreach ($value as $invalue) {
$array = (array) $invalue;
foreach ($array as $key2 => $value2) {
if ($key2=='access_token') {
$c++;
$ats[$c]=$value2;
}
if ($key2=='name') {
$pagenames[$c]=$value2;
}
if ($key2=='id') {
$ids[$c]=$value2;
}
}
}
}
}
所以我从$ data = $ graphObject-> asArray()获得了一个很好的干净数组;
然后继续进行。数组中有另一个对象,所以我将数组转换为数组,然后在其上运行foreach循环以获取我想要的键。
不是最漂亮但是它完成了这项工作。
感谢