2012-08-22 5 views
1

J'ai écrit une application facebook qui vérifie si un album existe, sinon il en crée un.Facebook créer un album graphique api

Tout cela fonctionnait il y a 2 semaines et maintenant je vais le vérifier pour montrer au client qu'il ne fonctionne plus. Je pensais que cela pourrait avoir quelque chose à voir avec Facebook et peut-être qu'ils ont maintenant besoin d'un SSL? Je ne trouve aucune preuve de cela sur le site Web cependant.

L'erreur que je reçois est:

Warning: file_get_contents(https://graph.facebook.com/517578134925015/albums?access_token=AAAD5tUCp808BAIZBPk4eV11mlf9C92velLsDeZAm5mXhKZCkwpM3LNy7ax6BBmhuH4BVZBUN6Iycyt55NoXZAFSts9zHeCFNzT6FLJYucgT2SQG8fOYIP) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 500 Internal Server Error in /var/www/vhosts/hidden/development/cms/backend/publishAlbum.php on line 59 

Mon code actuel est:

   //If no album ID is set, create a new album. 
      $graph_url = "https://graph.facebook.com/".$pageId."/albums?" . "access_token=". $pageAccessToken; 
      $postdata = http_build_query(
       array(
        'name' => $albumName 
       ) 
      ); 
      $opts = array('http' => 
       array(
        'method'=> 'POST', 
        'header'=> 
        'Content-type: application/x-www-form-urlencoded', 
        'content' => $postdata 
       ) 
      ); 
      $context = stream_context_create($opts); 
      $result = json_decode(file_get_contents($graph_url, false, $context)); 

Toute aide est appréciée.

Merci

EDIT:

Le code que j'essayé utilise l'API.

$params = array(
    'name' => 'testtest', 
    'message' => 'test test' 
); 
try{ 
    $albumtResult = $facebook->api('/'.$pageId.'/albums', 'post', $params); 
} 
catch(FacebookApiException $e){ 
    error_log($e); 
    $albumtResult = null; 
} 
$albumId = $albumtResult->id; 

Voici l'exception pris: http://pastebin.com/pxeyRTDn

Répondre

1

Après beaucoup de recherches, quelqu'un a créé un rapport de bogue sur Facebook qui était presque identique à mon problème.

Depuis sa création, beaucoup de repo et d'autres personnes ont déclaré avoir le même problème.

La priorité sur facebook a été changée en haut donc j'espère que cela se corrige bientôt.

Facebook rapport de bogue: https://developers.facebook.com/bugs/376442565760536?browse=search_50361119879b15494037772

Merci pour le temps everyones.

+0

s'il vous plaît marquer cette réponse comme "accepté" parce que c'est en fait ce qui cause le problème. –

+0

Vous devez attendre 24 heures, seulement 2 heures restantes. – CharliePrynn

+0

Cela a été corrigé. Il a été testé et fonctionne le 31/08/2012. – CharliePrynn

1

Eh bien, la raison de cette erreur serait beaucoup plus facile à comprendre, si vous avez utilisé le SDK PHP pour faire des appels API, au lieu de les faire "À la main" en utilisant file_get_contents ... car en utilisant le SDK, vous obtenez une exception qui devrait pointer vers la cause de l'erreur, alors que file_get_contents (par défaut) envoie juste un avertissement quand il reçoit autre chose qu'un code d'état HTTP 2xx pour une réponse ne vous permet pas d'accéder au corps de la réponse (qui contiendra probablement aussi un message d'erreur lisible par un humain).

Mon conseil: Utilisez le SDK!

Sinon, ajoutez au paramètre de contexte que vous souhaitez voir les données renvoyées même si le code d'état signale une erreur. (détails -> voir manuel)

+0

Merci pour la réponse. C'est comme cela que je l'ai fait en premier lieu, mais ça ne marche pas non plus. De cette façon, travaillé jusqu'à il y a quelques semaines. J'ai ajouté le code au message original que j'ai écrit en utilisant l'API, peut-être pourriez-vous me dire si quelque chose ne va pas. Bien que, je crois que cela devrait fonctionner. – CharliePrynn

+0

OK, _ "Une erreur inconnue est survenue." _ N'est pas la description d'erreur la plus utile (merci, Facebook), mais le type de _OAuthException_ pourrait signifier que c'est un problème d'autorisations ... (?) – CBroe

+0

Je pensais que ça pourrait être des permissions, mais mon application est destinée à vérifier si l'album est là, si ce n'est pas le créer et ensuite télécharger un lot d'images en utilisant la demande par lots. Mais pour le moment, il ne parvient pas à créer l'album avec l'erreur OAuthException et télécharge toutes les images dans une galerie par défaut avec le nom de l'application. Donc, je devrais avoir les autorisations correctes pour créer un album s'il peut télécharger des images. – CharliePrynn