如何使用php将照片从facebook导入网站


How to import photos from facebook into a website using php?

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

如果有人能帮我提供一个教程链接,或者为我指明正确的方向。

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

您可以通过两种方式做到这一点:在服务器端(在您的情况下是PHP)或使用JavaScriptSDK在客户端。

两者都假定您具有所需的访问凭据。你需要注册一个应用程序帐户才能在Facebook开发者网站上获得这些

服务器端

第一步是让您的应用程序参与OAuth身份验证过程。这在Facebook指南中有很好的PHP文档(请参阅服务器端流程部分)。

完成后,您将拥有一个访问令牌,可以使用该令牌调用Graph 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文档中描述的Photo实体的列表。

客户端

您需要在您的网页上设置JavaScript SDK,如本文所述。

客户端的身份验证由JavaScriptSDK处理,再次在身份验证指南中进行了说明。

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

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

查看堆栈上的其他问题如何从Facebook导入照片?

我认为现在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>';
}
?>