2010-06-11 4 views
5

Я пытаюсь загрузить изображение в галерею на странице facebook вентилятора, вот мой код до сих пор,Загрузка изображения на Facebook

$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); 

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

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

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

ответ

4

Хорошо, получил это работает, вот код, при условии, что у вас есть действительная сессия собирается.

$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

Чувак вы рок ... спасибо за помощь !!!! – 2010-06-28 19:44:39

+0

Приятно, рад, что я могу помочь! – Odyss3us

0

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

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

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

+0

Я на самом деле запрашиваю разрешение publish_stream в моей сессии, но все равно ничего. – Odyss3us

+0

Вы отправляете изображение в альбом, не должны ли вы также запрашивать user_photos? – Zyava

+0

Хорошо, я попробую! Я буду держать вас в курсе! Спасибо за комментарии! – Odyss3us

Смежные вопросы