如何使用PHP将Facebook中的照片导入网站?

时间:2011-06-21 17:00:17

标签: php facebook

我正在创建一个网站,其中使用Facebook帐户登录的用户将在页面上看到他们的图片。我必须在我的网站上放置什么代码才能看到用户图片中显示的内容。

如果有人可以帮助我找到指导教程的链接或指向正确的方向。

我已经阅读了很多来自Facebook和堆栈溢出的文档,但我找不到答案,

3 个答案:

答案 0 :(得分:2)

您可以通过以下两种方式执行此操作:在服务器端(在您的情况下为PHP)或在客户端使用JavaScript SDK。

两者都假设您拥有所需的访问凭据。您需要注册一个应用程序帐户才能在Facebook Developer site

中获取这些帐户

服务器端

第一步是让您的应用程序参与OAuth身份验证过程。这在Facebook guide中的PHP中有详细记载(参见“服务器端流程”部分)。

完成后,您将拥有一个访问令牌,您可以使用该API调用图谱API。获取用户照片的端点是https://graph.facebook.com/me/photos?access_token=<token>。在这种情况下,me始终是登录的用户,为您的应用程序提供令牌。

在PHP中,假设您已在$SESSION['token']中存储了访问令牌,您可以通过以下方式请求照片有效负载:

$url = "https://graph.facebook.com/me/photos?access_token=" . $SESSION['token'];
$photos = json_decode(file_get_contents($url));

$photos对象将是Facebook docs中描述的Photo个实体的列表。

客户端

您需要在网页上设置JavaScript SDK,如文档here

客户端的身份验证由JavaScript SDK处理,再次记录在authentication guide

使用SDK,您可以针对相同的照片结构对Graph API进行客户端JavaScript调用:

FB.api('/me/photos', function(response) {
    if(!response || response.error) {
        // render error
    } else {
        // render photos
    }
});

答案 1 :(得分:0)

在堆栈How to import photos from Facebook?

上查看此其他问题

答案 2 :(得分:0)

我认为现在Facebook已经改变了导入照片的方式,所以我们必须首先获得专辑而不是导入该专辑的照片。至少我是这样做的。 :)下面是使用PHP的基本api调用

获取相册: - <?php $user_albums = $facebook->api('/me/albums', $params); ?> 获取相册照片: - <?php $user_album_photos = $facebook->api('/' . $album_id . '/photos', $params); ?>

现在这里是完整的代码摘要。请将此代码复制到文件中并检查是否要导入照片

<?php
include 'facebook/facebook.php';
$config = array();
$config['appId'] = YOUR_APP_ID;
$config['secret'] = YOUR_APP_SECRET;
$config['fileUpload'] = false; // optional

$facebook = new Facebook($config);
$user_id = $facebook->getUser();
$access_token = $facebook->getAccessToken();
?>
<?php
if ($user_id && $access_token) {

    // We have a user ID, so probably a logged in user.
    // If not, we'll get an exception, which we handle below.
    try {

        $params = array(
            'method' => 'get',
            'access_token' => $access_token
        );

        if (isset($_GET['aid']) && $_GET['aid'] != '') {
            $aid = $_GET['aid'];
            $user_album_photos = $facebook->api('/' . $aid . '/photos', $params);
            //echo "Photos<br/>"; 
            ?>

            <?php foreach ($user_album_photos['data'] as $key => $value) {
                ?>
                <div class="album">
                    <div class="frame photo_frame">
                        <div class="edit-photo-nohover" style="display:block">
                            <div><input type="checkbox" id="fbimport_id<?php echo $value['id']; ?>" value="<?= $value['id'] . ',' . $value['images']['0']['source'] . ',' . $value['name'] ?>" name="fbimport[]" > <span>Import this Memory</span></div>

                        </div>
                        <table class="test">
                            <tr><td>
                                    <a href="javascript:void(0)"><img src="<?= $value['images']['0']['source'] ?>" height="100" width="100" /></a>
                                </td>
                            </tr>
                        </table>
                        <h3 id='bottomcaption'><?php echo $value['name']; ?></h3>
                    </div><br/>
                </div>
                <?php }
            ?>


        <?php
        } else {
            $user_albums = $facebook->api('/me/albums', $params);
            echo '<h3 class="page-title">Select Your Facebook Album</h3><br/><br/>';
            foreach ($user_albums['data'] as $key => $value) {

                /* load album if not blank */
                if (isset($value['count']) && $value['count'] != '' && $value['count'] != NULL && $value['count'] > 0) {

                    /* check if album has a cover photo. if not than load a default image */
                    if (isset($value['cover_photo']) && $value['cover_photo'] != '' && $value['cover_photo'] != NULL) {
                        $user_album_cover = $facebook->api('/' . $value['cover_photo'], $params);
                        $album_thumbnail = $user_album_cover['images']['0']['source'];
                    } else {
                        $album_thumbnail = 'default_thumb.gif';
                    }
                    /* check if album has cover photo end */
                    ?>
                    <div class="album">
                        <div class="frame photo_frame">
                            <table class="test">
                                <tr><td>
                                        <a href="?aid=<?= $value['id'] ?>" ><img src="<?= $album_thumbnail ?>" height="100" width="100" /></a>
                                    </td>
                                </tr>
                            </table>
                            <h3 id='bottomcaption'><?php echo $value['name']; ?></h3>
                        </div><br/>
                    </div>

                    <?php
                }//if(isset($value['count']) && $value['count'] != '' && $value['count'] != NULL && $value['count']>0)
                /* load album if not blank end */
            }
        }
    } catch (FacebookApiException $e) {
        // If the user is logged out, you can have a 
        // user ID even though the access token is invalid.
        // In this case, we'll get an exception, so we'll
        // just ask the user to login again here.
        $login_url = $facebook->getLoginUrl();
        echo 'Please <a href="' . $login_url . '">login.</a>';
        error_log($e->getType());
        error_log($e->getMessage());
    }
} else {

    // No user, print a link for the user to login
    $login_url = $facebook->getLoginUrl();
    echo 'Please <a href="' . $login_url . '">login.</a>';
}
?>