嗨,我正试图从一个特定的相册(总是相同的硬编码id)抓取所有图片。我使用的是Facebook的图形API PHP SDK。这是我的代码:
<?php
require 'phpfiles/facebook.php';
$facebook = new Facebook(array(
'appId' => 'aaaa',
'secret' => 'bbbb',
'cookie' => true
));
$user_profile = $facebook->api('/1881235503185/photos?access_token=cccc');
var_dump($user_profile);
var_dump输出:
array(1) { ["data"]=> array(0) { } }
- 1881235503185是我的相册id,不受限制,对所有人开放
- access_token是我从应用程序页面为我的fb id获得的令牌。我没有得到oauth错误。
- 我有权限(user_photos),并试图添加一打其他权限。
- 当我用图形API资源管理器尝试它时,它可以工作到。
当我使用Javascript SDK时,它工作得很好…
FB.api('/1881235503185/photos?access_token=cccc', function(response) {
alert(response.data[0].name);
});
输出:Diep in de put
我忘了什么吗?
我明白了!应该是:<罢工>罢工>
$user_profile = $facebook->api('/1881235503185/photos', array('access_token' => 'cccc'));
对于新的Facebook PHP SDK,它应该是:
$albumjson = $facebook->api('/1881235503185?fields=photos');
<?php
require_once 'library/facebook.php';
try{
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));
if(is_null($facebook->getUser()))
{
header("Location:{$facebook->getLoginUrl(array('req_perms' => 'user_status,publish_stream,user_photos'))}");
exit;
}
$me = $facebook->api('/me');
}catch(Exception $e){
echo $e->getMessage();
echo '<p>Please try clearing your browser cookies or <a href="http://demos.frnzzz.com/fbAlbum/photos.php">click here</a>.</p>';
die;
}
?>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.all.latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.slideshow').cycle({
fx: 'fade'
});
});
</script>
<title>WebSPeaks.in | Access facebook Albums on your site using PHP</title>
</head>
<body>
<?php
$albums = $facebook->api('/me/albums');
$action = $_REQUEST['action'];
$album_id = '';
if(isset($action) && $action=='viewalbum'){
$album_id = $_REQUEST['album_id'];
$photos = $facebook->api("/{$album_id}/photos");
?>
<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>';
?>
</body>
</html>
我觉得很奇怪,它与JS工作,而不是PHP…这让我觉得这与你的PHP FB设置有关。你有没有再打个电话确认一下?如
$facebook->api('/me');
还要确保你已经检查了这些:
要读取'photo'对象,需要
任何有效的access_token,如果它是公共user_photos权限访问用户user_photo_video_tags上传的照片和相册访问用户已被标记的照片的权限Friends_photos访问朋友照片的权限访问照片的Friends_photo_video_tags权限用户的好友已被标记
Src:
http://developers.facebook.com/docs/reference/api/photo/