我有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的圖標上。 –