我已经编写了代码来获取php中的facebook图片并将其上传到我们的服务器上并且工作正常,但我从facebook获得的图像尺寸较小。以下是我的代码:
$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();
我已经看过多篇帖子,但单身并没有为我工作。我尝试了多种组合&#39; picture.type(normal)&#39;例如,我使用大型,方形而不是普通的,但它没有用。
如果有人知道解决方案,请告诉我。
谢谢
答案 0 :(得分:4)
我还没有尝试使用流/ Feed照片,但普遍接受的做法是:
http://graph.facebook.com/{ID of object}/picture?type=large
如果你想要&#34;大&#34;版本,你会这样做:
$response = $fb->get('/me?fields=photos.limit(12){name, picture.type(normal)}', $accessToken);
我不能100%确定这是否适用于实际照片(而不是用户个人资料图片或页面个人资料照片),但我会预感它 - 唯一的警告是你显然必须有有权查看照片的登录用户(除非它是公开的)。
对于专辑大图片替换
$response = $fb->get('/me?fields=photos.limit(12){name, images.type(normal)}', $accessToken);
与
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
源成员是指向完整照片的链接,而不是图片成员提供的缩略图链接。
参考链接:https://developers.facebook.com/docs/reference/api/photo/