Загрузка картинки на фейсбук - PullRequest
5 голосов
/ 11 июня 2010

Я пытаюсь загрузить изображение в галерею на странице фан-фейсбука. Вот мой код:

$ch = curl_init();

        $data = array('type' => 'client_cred', 'client_id' => 'app_id','client_secret'=>'secret_key',' redirect_uri'=>'http://apps.facebook.com/my-application/'); // your connect url here

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/oauth/access_token');
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

        $rs = curl_exec($ch);
        curl_close($ch);

        $ch = curl_init();
        $data = explode("=",$rs);
        $token = $data[1];

        $album_id = '1234';
        $file= 'http://my.website.com/my-application/sketch.jpg';
        $data = array(basename($file) => "@".realpath($file),
        //filename, where $row['file_location'] is a file hosted on my server
            "caption" => "test",
            "aid" => $album_id, //valid aid, as demonstrated above
            "access_token" => $token
        );

        $ch2 = curl_init();
        $url = "https://graph.facebook.com/".$album_id."/photos";
        curl_setopt($ch2, CURLOPT_URL, $url);
        curl_setopt($ch2, CURLOPT_HEADER, false);
        curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch2, CURLOPT_RETURNTRANSFER, false);
        curl_setopt($ch2, CURLOPT_POST, true);
        curl_setopt($ch2, CURLOPT_POSTFIELDS, $data);
        $op = curl_exec($ch2);

Когда я отображаю $ token, мне кажется, что я получаю токен, нокогда я запускаю скрипт, я получаю эту ошибку, {"error": {"type": "OAuthAccessTokenException", "message": "Требуется токен доступа для запроса этого ресурса."}, я понятия не имею, почему этоделая это!

По сути, в этом коде я получаю токен доступа с помощью curl, а затем загружаю фотографию в мой альбом также через curl, но я продолжаю получать эту ошибку!

Любая помощь будет оценена, спасибо!

Ответы [ 2 ]

4 голосов
/ 28 июня 2010

Хорошо, все заработало, вот код, предполагающий, что у вас есть действующий сеанс.

    $token = $session['access_token'];

    //upload photo
    $file= 'photo.jpg';
    $args = array(
    'message' => 'Photo from application',
    );
    $args[basename($file)] = '@' . realpath($file);

    $ch = curl_init();
    $url = 'https://graph.facebook.com/me/photos?access_token='.$token;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
    $data = curl_exec($ch);

Это загрузит указанное изображение в галерею держателей сеансов и создаст альбом, еслиздесь нет никого, также вы можете получить доступ к токену через массив сессий, как показано выше.Надеюсь, это кому-нибудь поможет.

0 голосов
/ 11 июня 2010

Возможно, ваше приложение не имеет необходимых разрешений.

Чтобы запросить разрешения через OAuth, используйте аргумент области в вашем запрос на авторизацию и включите разделенный запятыми список всех разрешения, которые вы хотите запросить.

http://developers.facebook.com/docs/authentication/permissions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...