Facebook API for PHP: 如何获取用户相册和照片?
Facebook API for PHP: how to get user albums and photos?
您好,我正在使用 Facebook API PHP(最新版本),我正在尝试获取包含用户照片的所有相册。
我写了这段代码:
<?php
require_once "common.php";
if( !isset( $_SESSION['facebook_access_token'] ) ){
header("Location: index.php");
exit;
}
$token= $_SESSION['facebook_access_token'];
try {
// Returns a `Facebook\FacebookResponse` object
$response= $fb->get('/me?fields=id,name,first_name,last_name,gender,link,birthday,location,picture', $token);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$user= $response->getGraphUser();
$albums = $fb->get('/me/albums', $token);
$action = ( isset($_REQUEST['action']) ) ? $_REQUEST['action'] : null;
$album_id = '';
if($action=='viewalbum'){
$album_id = $_REQUEST['album_id'];
$photos = $fb->get("/{$album_id}/photos", $token);
?>
<div class="slideshow">
<?php
foreach($photos['data'] as $photo)
{
echo "<img src='{$photo['source']}' />";
}
?>
</div>
<?php
}
$pageURL = 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
echo '<div class="alb">';
if(strstr($pageURL,'.php?')){
$and = '&';
}else{
$and = '?';
}
echo '<p class="hd">My Albums</p>';
foreach($albums['data'] as $album)
{
if($album_id == $album['id']){
$name = '<b><u>'.$album['name'].'</u></b>';
}else{
$name = $album['name'];
}
echo '<p>'."<a href=".$pageURL.$and."action=viewalbum&album_id=".$album['id'].">".$name.'</a></p>';
}
echo '</div>';
我在这里找到了这个例子:Get all images from specific Facebook album with Graph API PHP SDK
但是说:不能将 Facebook\FacebookResponse 类型的对象用作第 53 行的数组(我已经更改但根本不起作用,因为 API 函数不存在!)
我也尝试按照文档进行操作:https://developers.facebook.com/docs/graph-api/reference/user/photos/
但是execute函数不存在!我该怎么办?
你应该使用$photos = $fb->get("/{$album_id}/photos", $token)->getGraphEdge();
我已经解决了...
$albums = $fb->get('/me/albums', $token)->getGraphEdge()->asArray();
我可以获取专辑 ID 和名称作为数组。
对于照片:
$album_id = $_REQUEST['album_id'];
$photos = $fb->get("/{$album_id}/photos?fields=picture", $token)->getGraphEdge()->asArray();
?>
<div class="slideshow">
<?php
foreach($photos as $photo)
{
echo " <img src='{$photo['picture']}' /> ";
}
?>
</div>
这有效!
此处附上代码,可从相册中检索不同尺寸的照片,而不仅仅是 100 像素的图片。
$photos = $fb->get("/{--album_id--}/photos?fields=images&width", $accessToken->getValue())->getGraphEdge()->asArray();
//var_dump($photos);
foreach($photos as $photo){
echo "<br><img src='{$photo['images'][0]['source']}' />";//Get largest by 0 index
//foreach($photo['images'] as $photosize){
// echo "<br><img src='{$photosize['source']}'/>";
//}
}
您好,我正在使用 Facebook API PHP(最新版本),我正在尝试获取包含用户照片的所有相册。
我写了这段代码:
<?php
require_once "common.php";
if( !isset( $_SESSION['facebook_access_token'] ) ){
header("Location: index.php");
exit;
}
$token= $_SESSION['facebook_access_token'];
try {
// Returns a `Facebook\FacebookResponse` object
$response= $fb->get('/me?fields=id,name,first_name,last_name,gender,link,birthday,location,picture', $token);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$user= $response->getGraphUser();
$albums = $fb->get('/me/albums', $token);
$action = ( isset($_REQUEST['action']) ) ? $_REQUEST['action'] : null;
$album_id = '';
if($action=='viewalbum'){
$album_id = $_REQUEST['album_id'];
$photos = $fb->get("/{$album_id}/photos", $token);
?>
<div class="slideshow">
<?php
foreach($photos['data'] as $photo)
{
echo "<img src='{$photo['source']}' />";
}
?>
</div>
<?php
}
$pageURL = 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
echo '<div class="alb">';
if(strstr($pageURL,'.php?')){
$and = '&';
}else{
$and = '?';
}
echo '<p class="hd">My Albums</p>';
foreach($albums['data'] as $album)
{
if($album_id == $album['id']){
$name = '<b><u>'.$album['name'].'</u></b>';
}else{
$name = $album['name'];
}
echo '<p>'."<a href=".$pageURL.$and."action=viewalbum&album_id=".$album['id'].">".$name.'</a></p>';
}
echo '</div>';
我在这里找到了这个例子:Get all images from specific Facebook album with Graph API PHP SDK 但是说:不能将 Facebook\FacebookResponse 类型的对象用作第 53 行的数组(我已经更改但根本不起作用,因为 API 函数不存在!)
我也尝试按照文档进行操作:https://developers.facebook.com/docs/graph-api/reference/user/photos/
但是execute函数不存在!我该怎么办?
你应该使用$photos = $fb->get("/{$album_id}/photos", $token)->getGraphEdge();
我已经解决了...
$albums = $fb->get('/me/albums', $token)->getGraphEdge()->asArray();
我可以获取专辑 ID 和名称作为数组。
对于照片:
$album_id = $_REQUEST['album_id'];
$photos = $fb->get("/{$album_id}/photos?fields=picture", $token)->getGraphEdge()->asArray();
?>
<div class="slideshow">
<?php
foreach($photos as $photo)
{
echo " <img src='{$photo['picture']}' /> ";
}
?>
</div>
这有效!
此处附上代码,可从相册中检索不同尺寸的照片,而不仅仅是 100 像素的图片。
$photos = $fb->get("/{--album_id--}/photos?fields=images&width", $accessToken->getValue())->getGraphEdge()->asArray();
//var_dump($photos);
foreach($photos as $photo){
echo "<br><img src='{$photo['images'][0]['source']}' />";//Get largest by 0 index
//foreach($photo['images'] as $photosize){
// echo "<br><img src='{$photosize['source']}'/>";
//}
}