2015-10-17 178 views
1

我已經編寫了代碼來獲取facebook圖片在PHP中,並將其上傳到我們的服務器上,它工作正常,但我從facebook獲得的圖像的尺寸較小。以下是我的代碼:如何從Facebook中獲取大尺寸圖片圖形api

$user = array(); 

    $fb = new \Matrimony\Lib\Facebook\Facebook([ 
     'app_id' => $this->api_key, 
     'app_secret' => $this->api_secret, 
    ]); 

    $helper = $fb->getRedirectLoginHelper($this->redirect_login_url);  
    $facebookClient = $fb->getClient(); 

    try { 
     $accessToken = $helper->getAccessToken($this->redirect_login_url); 
     $response = $fb->get('/me?fields=photos.limit(12){name, picture.type(normal)}', $accessToken); 

    } catch(Facebook\Exceptions\FacebookResponseException $e) { 
     // When Graph returns an error 
     echo 'Graph returned an error: ' . $e->getMessage(); 
     exit; 
    } catch(Facebook\Exceptions\FacebookSDKException $e) { 
     // When validation fails or other local issues 
     echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
     exit; 
    } 

    if (isset($accessToken)) { 
     // Logged in 
     // Store the $accessToken in a PHP session 
     // You can also set the user as "logged in" at this point 
    } elseif ($helper->getError()) { 
     // There was an error (user probably rejected the request) 
     echo '<p>Error: ' . $helper->getError(); 
     echo '<p>Code: ' . $helper->getErrorCode(); 
     echo '<p>Reason: ' . $helper->getErrorReason(); 
     echo '<p>Description: ' . $helper->getErrorDescription(); 
     exit; 
    } 
    $data = $response->getDecodedBody(); 

我已經看到了多篇文章,但沒有單獨爲我工作。我已經嘗試了與'picture.type(normal)'的多重組合。例如,我用大,方形而不是普通,但它不起作用。

如果有人知道這個解決方案,請讓我知道。

謝謝

回答

3

我還沒有流/飼料照片想這一點,但這樣做的普遍接受的方式是:

http://graph.facebook.com/{ID of object}/picture

如果你想在「大」的版本,你會做:

http://graph.facebook.com/{ID of object}/picture?type=large 

我不是100%肯定這是否會爲真實照片(而不是用戶的個人資料圖片或網頁的個人資料相片)工作,但我有一個預感 - 唯一的警告是,你顯然必須有一個有權查看照片的登錄用戶(除非它是公開的)。

對於專輯大圖替換

$response = $fb->get('/me?fields=photos.limit(12){name, picture.type(normal)}', $accessToken); 

$response = $fb->get('/me?fields=photos.limit(12){name, images.type(normal)}', $accessToken); 

源構件是對整幅照片的鏈路,而不是由圖像構件設置的縮略圖的鏈接。

參考鏈接:https://developers.facebook.com/docs/reference/api/photo/

+0

Ajeet嗨,我試圖與你所提到的解決方案,但它僅與資料圖片工作。對於其他圖像,它不起作用。 – Mayur

+0

你好@MKT我更新我的答案試試吧!使用'圖像'而不是'圖片' –

+0

非常感謝你Ajeet,這是工作 – Mayur