2010-06-15 23 views
7

ho ottenuto la funzione di caricamento delle foto a lavorare con questo codice,Facebook graph API foto caricare in un album pagina fan

<?php 

include_once 'facebook-php-sdk/src/facebook.php'; 
include_once 'config.php';//this file contains the secret key and app id etc... 

$facebook = new Facebook(array(
    'appId' => FACEBOOK_APP_ID, 
    'secret' => FACEBOOK_SECRET_KEY, 
    'cookie' => true, 
    'domain' => 'your callback url goes here' 
)); 

$session = $facebook->getSession(); 

if (!$session) { 

    $url = $facebook->getLoginUrl(array(
       'canvas' => 1, 
       'fbconnect' => 0, 
       'req_perms'=>'user_photos,publish_stream,offline_access'//here I am requesting the required permissions, it should work with publish_stream alone, but I added the others just to be safe 
      )); 

    echo 'You are not logged in, please <a href="' . $facebook->getLoginUrl() . '">Login</a> to access this application'; 

} else{ 

    try { 

     $uid = $facebook->getUser(); 
     $me = $facebook->api('/me'); 
     $token = $session['access_token'];//here I get the token from the $session array 
     $album_id = 'the id of the album you wish to upload to eg: 1122'; 

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

     $ch = curl_init(); 
     $url = 'https://graph.facebook.com/'.$album_id.'/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); 

     //returns the id of the photo you just uploaded 
     print_r(json_decode($data,true)); 

    } catch(FacebookApiException $e){ 
     echo "Error:" . print_r($e, true); 
    } 
} 
?> 

Spero che questo aiuta, un amico e ho fracassato la testa contro un muro per un bel un po 'di tempo per farlo funzionare!

Ad ogni modo, ecco la mia domanda, come posso caricare un'immagine su una pagina fan? Sto facendo fatica a farlo funzionare, quando carico l'immagine tutto quello che ottengo è il foto id ma nessuna foto nell'album.

Quindi, in pratica, quando l'utente fa clic sul pulsante di caricamento sulla nostra applicazione, ho bisogno di caricare l'immagine che hanno creato sull'album della nostra fan page con i tag su di essa.

Qualcuno sa come posso realizzare questo?

risposta

2

Questo sembra essere un bug con l'API Graph. Vai a questa http://forum.developers.facebook.com/viewtopic.php?id=59063 (non può postare link, ancora)

+0

ah dannazione ... altri modi per provare a collegare le foto a una pagina fan? C'è un modo per taggare le foto quando vengono caricate? – Odyss3us

+0

Attualmente non è possibile autenticare in base alle pagine. Ma FB sta rilasciando una correzione martedì che risolverà questo problema. Spero che la correzione crei anche le autorizzazioni per caricare le foto sulle pagine. http://bugs.developers.facebook.com/show_bug.cgi?id=10005 (Vedi i commenti # 85 e # 98 nello specifico) – gsharma

+0

Speriamo che abbiano capito bene! Grazie per la risposta. – Odyss3us

4

seguire le semplici url Get login con

$ data [ 'url'] = $ this-> facebook-> getLoginUrl (array (' scope '=>' publish_stream, read_stream, user_likes, user_photos, manage_pages'));

questo vi permetterà di postare foto e aggiungere album nella fanpage. Ottenere token di accesso per

$accounts = $this->facebook->api('/'.$PAGE_ID.'?fields=access_token', 'get', array('access_token' => $access_token)); 
$page_access_token = $accounts['access_token']; 

Creare album con altri dettagli

  $album_details = array(
       'message'=> 'Test album', 
       'name'=> $today ,//should be unique each time, 
      'access_token'=>$page_access_token 
      ); 
      $album_created = $this->facebook->api('/'.$PAGE_ID.'/albums', 'post', $album_details); 

Carica foto a un album fanpage particualar

$photo = $this->facebook->api('/'.$album_id.'/photos', 'POST', array(
             'source' => "@"."@".realpath(BASEPATH."../".$photopath), 
             'message' => 'new photo', 
         'access_token' => $page_access_token, 
         'no_story' => 0 
             ) 
            ); 

       //print_r($album_created['id']); 

e modificare il percorso come si desidera Felice di codifica

Questo codice funziona in modo impressionante in questo sito .... perché downvoted. Puoi pubblicare foto su fanpage se sei proprietario di quella pagina. Ho una copia funzionante di quell'applicazione.

+1

probabilmente perché non vogliono che tutti i loro utenti diventino proprietari della pagina;) – dwery

+0

Ciao caro, potresti inviarmi una copia di lavoro per creare album e caricare più foto. Ho bisogno di un aiuto. grazie. –

Problemi correlati