2010-06-11 10 views
5

Sto cercando di caricare un'immagine da una galleria in una pagina fan di Facebook, ecco il mio codice finora,Caricare un'immagine con i tuoi amici

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

Quando ho echo $ motivo, mi sembra di essere sempre il token, ma quando eseguo lo script, ottengo questo errore, {"error": {"type": "OAuthAccessTokenException", "message": "È richiesto un token di accesso per richiedere questa risorsa."}, Non ho idea perché sta facendo questo!

Fondamentalmente quello che sto facendo in quel codice è ottenere il token di accesso con curl, e poi, caricando la foto sul mio album anche tramite curl, ma continuo a ricevere quell'errore!

Qualsiasi aiuto sarebbe apprezzato, grazie!

risposta

4

Ok, capito di lavoro, ecco il codice, a patto che abbiate una sessione valida in corso.

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

verrà quindi caricato l'immagine specificata alla galleria titolari di sessione, si creerà un album se non c'è un presente, inoltre è possibile accedere tramite il token la matrice sessione come dimostrato sopra. Spero che questo aiuti qualcuno fuori.

+0

Dude you rock ... grazie per l'aiuto !!!! –

+0

È un piacere, felice di poterti aiutare! – Odyss3us

0

Probabilmente l'applicazione non ha le autorizzazioni necessarie.

per richiedere i permessi tramite OAuth, utilizzare l'argomento ambito nella richiesta di autorizzazione , e includono un elenco separato da virgole di tutti i autorizzazioni che si desidera richiedere.

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

+0

Attualmente sto richiedendo il permesso publish_stream nella mia sessione, ma ancora nulla. – Odyss3us

+0

Postate l'immagine all'album, non dovreste richiedere anche user_photos? – Zyava

+0

Buon punto, ci proverò! Ti terrò a posto ragazzi! Grazie per i commenti finora! – Odyss3us

Problemi correlati