2009-08-13 6 views
1

J'essaie d'appeler Photo.upload sur le serveur de l'API Facebook. Autant que je peux dire que le code pour construire l'appel est bon mais je ne peux pas comprendre la réponse que je reçois du serveur. Pour autant que je puisse voir, cet appel est bon pour le travail et d'autres personnes n'ont pas ce problème. Je peux seulement raisonner que quelque chose ne va pas avec le code. Les choses commentées sont un artefact de moi essayant différentes choses pour obtenir une réponse différente du serveur. Le code original que j'ai changé a été en partie tirée d'un exemple de la façon de faire ce que je ne pouvais pas travailler soit vraiment:Appel API Facebook - "Cette version de l'API est obsolète"

http://www.jaisenmathai.com/blog/2008/11/27/using-the-facebook-api-to-upload-photos/

serveur Responce:

12 cette version de l'API est la méthode dépréciée photos.upload api_key b92cee19a33c861275bfce4695896e44 call_id 1.250.194.789,61 garden_jpg /var/www/vivaladan/pictureyourselfhull/garden.jpg v 0 sig 896ee95339cad24ce7e64a05ca764123

code:

$key = b92cee19a33c861275bfce4695896e44; 
$ver = 1.0; 
$cid = microtime(true); 
$uid = BIGINT; 
$file= "garden.jpg"; 

$args = array(
    //amethod => photos.upload, 
    v => $ver, 
    api_key => $key, 
    //uid => $uid, 
    call_id => $cid, 
    //format => XML 
); 

$args[basename($file)] = realpath($file); 
signRequest($args,$sec); 

$postString = ""; 
foreach($args as $index => $value) { 
$postString .= $index ."=".$value."&"; 
} 
$postString = trim($postString, '&'); 


$ch = curl_init(); 
$url = "http://api.facebook.com/restserver.php?method=photos.upload"; 
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, $postString); 
$data = curl_exec($ch); 

echo $data; 

function signRequest(&$args, $secret){ 
    ksort($args); 
    $sig = ""; 
    foreach($args as $k => $v){ 
    $sig .= $k . '=' . $v; 
    } 
    $sig .= $secret; 
    $args[sig] = md5($sig); 
} 
+0

Uhg, cette interface est soooo pas RESTful. Désolé, je sais que ce n'est pas lié à votre commentaire, mais quand ils intègrent une méthode est un appel POST à ​​une URL générique et l'appellent REST, il continue à semer les graines de SOAP/RPC ... – Gandalf

+2

http: //api.facebook .com/restserver.php? method = photos.upload est un URI unique parfaitement valide. Qui a dit que REST a besoin de bonnes URL mod_rewrite? – ceejayoz

+0

@ceejayoz la raison pour laquelle ce n'est pas RESTful est que le même URI est utilisé pour tout. Les ressources doivent avoir leurs propres URI uniques - les paramètres de requête ne comptent pas dans le cadre de l'URI. Ils sont les paramètres de requête de cet URI. Les URI avec des chaînes de requête ne sont pas mises en cache, ce qui est important. C'est RPC, à travers-et-à travers. – aehlke

Répondre

0

Je devine que c'est parce que vous utilisez $ver = 0.0; - il n'y a pas de version 0.0 de l'API.

+0

J'essayais différents numéros de version pour voir si cela faisait une différence. C'était à l'origine 1.0. Je l'ai changé dans l'exemple de code –

0

essayez d'utiliser l'URL de l'API api.new.facebook.com au lieu

2

Rest appel API ne fonctionne plus. Essayez GraphApi

Questions connexes