【问题标题】:Get all images from specific Facebook album with Graph API PHP SDK使用 Graph API PHP SDK 从特定 Facebook 相册中获取所有图片
【发布时间】:2015-08-18 14:22:37
【问题描述】:

您好,我正在尝试从特定相册中获取所有图片(始终使用相同的硬编码 ID)。 我正在使用 Facebook 的 Graph 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) 并尝试添加十几个其他权限。
  • 当我尝试使用 Graph API Explorer 时,它可以正常工作。

当我使用 Javascript SDK 时,它可以正常工作...

FB.api('/1881235503185/photos?access_token=cccc', function(response) {
    alert(response.data[0].name);
});

输出:深入研究

我是不是忘记了什么?

【问题讨论】:

  • 那个js版本真的适合你吗?我需要做完全相同的事情并面临 JS 解决方案的问题。当我以专辑所有者身份登录时尝试调用它时 - 有效。但是,当我以任何其他用户身份登录时,响应为空,尽管相册是公开的并且其中有公开照片......

标签: php facebook facebook-graph-api


【解决方案1】:

我明白了!它应该是: 罢工>

$user_profile = $facebook->api('/1881235503185/photos', array('access_token' => 'cccc'));

使用新的 Facebook PHP SDK 应该是:

$albumjson = $facebook->api('/1881235503185?fields=photos');

【讨论】:

    【解决方案2】:
    <?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>
    

    【讨论】:

    • 我用了你的例子,它会自动重定向到 facebook.com,有什么解决办法吗?
    • 你确定这条线正常吗? $photos = $facebook->api("/{$album_id}/photos");
    【解决方案3】:

    我觉得奇怪的是它适用于 JS 而不是 PHP...让我觉得这与您的 PHP FB 设置有关..您是否尝试过另一个电话来检查它不是?比如

    $facebook->api('/me');
    

    还要确保您已检查这些:

    要读取您需要的“照片”对象

    任何有效的 access_token,如果它是 public user_photos 权限 访问用户 user_photo_video_tags 上传的照片和相册 访问已标记用户的照片的权限 friends_photos 访问朋友照片的权限 Friends_photo_video_tags 访问照片的权限 用户的朋友已被标记

    来源:

    http://developers.facebook.com/docs/reference/api/photo/

    【讨论】:

    • 我已经尝试了所有这些权限,但没有成功。 api('/me') 给出了一个 oauth 错误(!?)但是当我使用 api('/[my_uid]') 时,我得到了我所有的信息......也尝试从 3.0.1 降级到 3.0.0成功...
    • 我明白了!应该是:$user_profile = $facebook->api('/1881235503185/photos', array('access_token' => 'cccc'));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多