2010-12-22 8 views
5

je peux créer un album en utilisant api graphique facebook en affichant des données àimages télécharger sur un album spécifique Facebook

http://graph.facebook.com/ALBUM_ID/albums 

renvoie un identifiant, ce qui est l'identifiant de l'album.

Je l'ai confirmé deux façons

  1. en allant à cet album, l'aide est différent de ce que id i reçu
  2. et en affichant http://graph.facebook.com/{ALBUM_ID_I_RECIEVED}/photos, mais la photo ne sera jamais publié à l'album nouvellement créé à la place qu'il est publié sur un album d'application par défaut.

J'ai besoin de connaître l'identifiant réel de l'album pour pouvoir télécharger des images vers un nouvel album.

+0

+1 pour "Salut stackoverflow" - a fait ma journée! – RabidFire

Répondre

9

Le nouveau php-sdk fonctionne très bien, je viens de tester et voici mes commentaires:

que vous avez 1.Assurez droit l'autorisation étendue qui est publish_stream à la fois la création et AlbumPhoto télécharger.

2.Après créer l'album en utilisant le code ci-dessous, vous recevrez l'album ID:

$post_data = array(
    'name'=>"My Test Album", 
    'description'=>"My Test Album Desc" 
    ); 
$data['album'] = $this->facebook->api("/me/albums", 'post', $post_data); 

PS: Je confirme cet ID est pas l'ID que vous voyez lorsque vous naviguez sur Facebook

3 .Maintenant nous avons besoin de télécharger l'image avec l'album "référence" ID que vous avez:

$file = FCPATH . "assets/img/small1.jpg"; 
$post_data = array(
    "message" => "My photo caption", 
    "source" => '@' . realpath($file) 
); 
$album_id = "473425002142"; 
$data['photo'] = $this->facebook->api("/$album_id/photos", 'post', $post_data); 

PS: le FCPATH constant est une constante CodeIgniter, vous pouvez vous $_SERVER['DOCUMENT_ROOT'] ou quelle que soit la méthode avec laquelle vous êtes à l'aise.

Et le résultat:
alt text

+2

+1 et réponse acceptée, Merci mec. –

+0

Aussi grâce à stackoverflow, Bounty fonctionne vraiment. –

+0

qu'est-ce que ** $ album_id ** et comment vous obtenez cela? – Sourav

2

J'ai effectivement fait face exactement au même problème, mais avec des événements. Ce qui se passe, c'est que Facebook ne renvoie pas l'ID de l'événement (dans votre cas, l'ID de l'album), mais qu'il y a un léger décalage (avec un maximum de 10). Donc, voici le flux de travail que vous devez suivre (afin de le faire fonctionner!):

  1. Publier l'album. Enregistrez l'ID d'album (faux) renvoyé, fb_aid dans votre base de données.
  2. Requête pour tous les albums publiés de l'utilisateur FB connecté.
  3. Parcourez la liste des albums retournés.
  4. Identifiez l'identifiant d'album actuel en testant si le décalage est < 10.
  5. Enregistrez l'ID d'album actuel dans la base de données.

$fbAlbums = $this->facebook->api(array('method' => 'photos.getalbums')); 
$myAlbums = $this->Album->find('all'); 
for ($i = 0; $i < count($fbAlbums); ++$i) {  
    foreach ($myAlbums as $myAlbum) { 
     $aidOffset = abs($fbAlbums[$i]['aid'] - $myAlbum['Album']['fb_aid']); 
     if ($aidOffset != 0  // Prevents fixing an already fixed album id 
      && $aidOffset < 10 // Checks if this is a FB ID Screw up 
      ) { 
      $myAlbum['Album']['fb_aid'] = $fbAlbums[$i]['aid']; 
      $this->Album->save($myAlbum); 
      break; // Little optimization 
     } 
    } 
} 

Maintenant, votre base de données a mis à jour ID album. Hourra! Développeur: 1. Facebook API: 0.

Je sais que ce n'est pas joli. Je sais qu'il y a tellement de problèmes potentiels avec cela. Mais il fait le travail jusqu'à ce que Facebook se soucie suffisamment de réparer son API.

+0

merci pour votre réponse. Je vais essayer dès que possible, j'ai le temps. –

+0

Je pense que vous utilisez le vieux Rest Api, je ne suis pas confirmer si cela va aider dans l'API graphique, mais même si je vais essayer parce que je suis coincé. –

+0

@Imran - Oui, je suis. Pour utiliser la dernière API graphique, vous pouvez simplement utiliser quelque chose comme: '$ this-> facebook-> api ('/ me/albums'));' – RabidFire

Questions connexes