【发布时间】:2012-05-26 07:09:54
【问题描述】:
有没有办法使用 Graph API 从 Facebook 检索公共相册中的照片?是否可以不提供访问令牌?如果没有,是否可以不使用 60 天后过期的访问令牌(似乎是默认过期时间)。
如果我在网站上嵌入 Facebook 相册,我不想每 60 天重新授权或获取新的访问令牌并重新发布我的网站。
谢谢
【问题讨论】:
有没有办法使用 Graph API 从 Facebook 检索公共相册中的照片?是否可以不提供访问令牌?如果没有,是否可以不使用 60 天后过期的访问令牌(似乎是默认过期时间)。
如果我在网站上嵌入 Facebook 相册,我不想每 60 天重新授权或获取新的访问令牌并重新发布我的网站。
谢谢
【问题讨论】:
无论是公开的还是私有的,都需要添加访问令牌,否则它不会返回数据。
这里是示例代码
$album_id = your album id;
$access_token = 'your token';
$url = "https://graph.facebook.com/{$album_id}/photos?access_token={$access_token}";
$image = json_decode(file_get_contents($url));
foreach($image->data as $img){
echo "<img src='{$img->images[6]->source}' /> ";
}
请确保在您收集所需令牌时拥有offline_access 令牌bcoz,否则令牌将很快过期,如果您也有离线访问权限,那么您的令牌不会过期,即使在 60 天内也不会过期。
祝你好运
【讨论】:
只要您的相册和其中的照片是公开的,您就不必获得 OAuth 令牌(至少目前是这样)。
如果您在浏览到 https://graph.facebook.com/ALBUM_ID/photos 时获得数据,其中 ALBUM_ID 是您的相册 ID,那么您会没事的。
在您的脚本中,您可以执行以下操作:
$fb_data = json_decode( file_get_contents( 'https://graph.facebook.com/ALBUM_ID/photos') );
foreach ($fb_data['images'] as $img) {
sprintf('<img src="%s" height="%d" width="%d" />', $img['source'], $img['height'], $img['width'] );
}
如果项目不公开,请创建一个连接器应用程序,您可以使用 APP_ID 和 APP_SECRET 作为访问令牌,使用 php SDK。
【讨论】:
object(stdClass)#1 (1) { ["data"]=> array(0) { } } 也许我使用了不正确的专辑 ID?表单 URL 的专辑是什么:facebook.com/media/set/…
/albums。这将为您提供所有专辑及其 ID 的列表。
xxxxxxxxxxxxx。但是,这不太可靠。并非所有对象都返回一个 id,您可以在前端 url 的 API 调用中使用。