【问题标题】:Embedding Facebook Albums in a Website在网站中嵌入 Facebook 相册
【发布时间】:2012-05-26 07:09:54
【问题描述】:

有没有办法使用 Graph API 从 Facebook 检索公共相册中的照片?是否可以不提供访问令牌?如果没有,是否可以不使用 60 天后过期的访问令牌(似乎是默认过期时间)。

如果我在网站上嵌入 Facebook 相册,我不想每 60 天重新授权或获取新的访问令牌并重新发布我的网站。

谢谢

【问题讨论】:

    标签: php facebook api photo


    【解决方案1】:

    无论是公开的还是私有的,都需要添加访问令牌,否则它不会返回数据。

    这里是示例代码

    $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 天内也不会过期。

    祝你好运

    【讨论】:

    • offline_access 不是已弃用吗? source
    【解决方案2】:

    只要您的相册和其中的照片是公开的,您就不必获得 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"]=&gt; array(0) { } } 也许我使用了不正确的专辑 ID?表单 URL 的专辑是什么:facebook.com/media/set/…
    • 找到它的最简单方法是使用Graph API Explorer。在“GET”框中输入相册所有者的用户名或 ID,然后在末尾添加 /albums。这将为您提供所有专辑及其 ID 的列表。
    • 从前端查看我的一张专辑,您的 url 方案中的 id 似乎是 xxxxxxxxxxxxx。但是,这不太可靠。并非所有对象都返回一个 id,您可以在前端 url 的 API 调用中使用。
    • 通过 Graph API Explorer 进行挖掘,我能够在公共相册中获取照片的唯一方法是使用启用了 user_photo 权限的 API 密钥。删除 API 会导致请求返回空数据。
    猜你喜欢
    • 2014-03-31
    • 2012-06-27
    • 2012-05-25
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2023-03-25
    • 2011-08-15
    • 1970-01-01
    相关资源
    最近更新 更多