Извлечение фотографий Facebook из php-скрипта

#php #facebook

#php #Facebook

Вопрос:

Я хочу разработать приложение на php, которое я мог бы связать с определенным фотоальбомом в моем профиле Facebook (или со всеми моими фотографиями), чтобы узнать прямую URL-ссылку на каждую фотографию.

Идея состоит в том, чтобы создать php-скрипт, который показывает в хронологическом порядке мои фотографии facebook, как презентацию. Я php-программист, но я ничего не знаю об Facebook integration API. Итак, ребята, если вы можете предложить мне способы сделать это, это будет здорово. Извините за мой английский. Спасибо!

Ответ №1:

вот класс для извлечения определенных изображений профиля пользователя (PHP), из него вы почерпнете идею создания того, что вы хотите:

 <?php

class FBPicture {
    public $uid;
    public $dir;
    public $type = 'large';

    public function setUId ($id) {
        $this->uid = $id;
    }

    public function setDir ($dir) {
        $this->dir = $dir;
    }

    public function fetch ($_uid=null, $_dir=null, $_type=null) {
        if ($_uid === null)
            throw new CHttpException ('Facebook User ID or Username is not set.');
        if ($_dir === null)
            $_dir = '/storage/';
        if ($_type === null)
            $_type = 'large';

        $this->uid = $_uid;
        $this->dir = $_dir;
        $this->type = $_type;

        $dir = getcwd () . $this->dir;
        $type = $this->type;

        // request URI
        $host = 'http://graph.facebook.com/' . $_uid;
        $request = '/picture';
        $type = '?type=' . $type;

        $contents = file_get_contents ($host.$request.$type);

        // create the file (check existance);
        $file = 'fb_' . $uid . '_' . rand (0, 9999);
        $ext = '.jpg';

        if (file_exists ($dir)) {
            if (file_exists ($dir.$file.$ext)) {
                $file .= $dir.$file.'2'.$ext;

                if ($this->appendToFile ($file, $contents)) {
                    return str_replace ($dir, '', $file);
                }
            } else {
                $file = $dir.$file.$ext;
                touch ($file);

                if ($this->appendToFile ($file, $contents)) {
                    return str_replace ($dir, '', $file);
                }
            }
        } else {
            // false is returned if directory doesn't exist
            return false;
        }
    }

    private function appendToFile ($file, $contents) {
        $fp = fopen ($file, 'w');
        $retVal = fwrite ($fp, $contents);
        fclose ($fp);

        return $retVal;
    }
}

// sample usage:
// $pic will be the filename of the saved file...
$pic = FBPicture::fetch('zuck', 'uploads/', 'large'); // get a large photo of Mark Zuckerberg, and save it in the "uploads/" directory
// this will request the graph url: http://graph.facebook.com/zuck/picture?type=large

?>