2015-10-17 93 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

相关问题