我有Graph API response
奇怪的问题。我有以下调用Graph API
:getDecodedBody()不解析对象(原始图形API响应)正确
try{
$appName=$fb->get('/'.$apid, $apid.'|'.$apsec);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
//echo 'Graph returned an error: ' . $e->getMessage();
//echo 'Graph returned an error: ' . $e->getHttpStatusCode();
if($e->getHttpStatusCode()=='400'){
echo json_encode('2');
}
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$appName=$appName->getDecodedBody();//app data returned as array
而且这工作得很好,我得到array
形式object
和我喜欢,我可以使用它。现在是这个问题。我几乎运行相同的代码同上,只是想找回app's icon
的url
:
try{
$appPic=$fb->get('/'.$apid.'/picture', $apid.'|'.$apsec);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
echo 'Graph returned an error: ' . $e->getHttpStatusCode();
if($e->getHttpStatusCode()=='400'){
echo json_encode('2');
}
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$appPic=$appPic->getDecodedBody();
print_r($appPic);
这将返回一个空数组。但是如果在Graph API Explorer中运行相同的代码,我会得到如下回应:
这对我来说似乎很奇怪,我不知道为什么会出现这种情况。请帮助,我真的需要这个url
的形式array
。
UPDATE: 我看着有点多在Inspect
工具Network
部分,这两个调用似乎不同。在这里,您可以看到:
似乎到Graph API
第一呼叫使用Facebook/FacebookResponse
类和第二Facebook/FacebookRequest
。我一找到这个文件,就立刻打开了文档,看到Facebook/FacebookRequest
里面没有getDecodedBody()
这样的方法。但是,当我从上面的代码我得到一个array
但空(当然,在做getDecodedBody()
后)。
UPDATE 我也试过这样:
$url="https://graph.facebook.com/$apid/picture";
$app_icon = file_get_contents($url);
var_dump($app_icon);
返回bool(false)
。当我在浏览器中输入相同的网址时(当然,我输入了真实的应用程序ID,而不是可变的),它会显示我的应用程序图标。看起来好像Facebook
不允许file_get_contents
从他们的服务器获取数据的方式。我也试图与cURL
做同样的,就像这样:
$url="https://graph.facebook.com/$apid/picture";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HEADER, false);
$result=curl_exec($ch);
if(!$result){
echo ('cURL ERROR: '.curl_error($ch));
}
var_dump($result);
curl_close($ch);
但是,当我var_dump($result);
返回bool(true)
,但没有图片,也没有链接导致应用程序的图片。
第一个对象,当我做'var_dump($ appName)'时,第二次当我做'var_dump($ appPic)'。纠正我,如果我错了,但我不同意你的答案。这甚至不是那么重要,除了这个解释之外,我想获得关于如何解析血腥对象的帮助,这样我就可以将url带到app的图标上。 –