2009-08-13 52 views
1

我正尝试在Facebook API服务器上调用Photo.upload。据我可以告诉代码构造的电话是好的,但我不明白我从服务器回来的回应。据我所知,这个呼吁是要工作的,其他人不会遇到这个问题。我只能推断代码有问题。评论的东西是我尝试不同的事情,从服务器获得不同的响应的人工产物。我已经改变了原来的代码是从如何做到这一点,其一个例子参加我不能去上班要么真:Facebook API调用 - “此API版本已弃用”

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

服务器性反应:

12此API版本已被弃用方法photos.upload API_KEY b92cee19a33c861275bfce4695896e44 CALL_ID 1250194789.61 garden_jpg /var/www/vivaladan/pictureyourselfhull/garden.jpg -V 0 SIG 896ee95339cad24ce7e64a05ca764123

代码

$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,该接口是soooo不是RESTful。对不起,我知道它与你的评论没有关系,但是当他们嵌入一个方法是POST调用一个通用的URL并将其称为REST时,它只是播种了SOAP/RPC的种子...... – Gandalf 2009-08-13 20:40:08

+2

http://api.facebook .com/restserver.php?method = photos.upload是一个完全有效的唯一URI。谁说REST需要mod_rewrite漂亮的URL? – ceejayoz 2009-08-13 20:45:34

+0

@ceejayoz它不是RESTful的原因是同一个URI用于一切。资源必须拥有自己唯一的URI - 查询参数不会被视为URI的一部分。它们是该URI的查询参数。包含查询字符串的URI不会被缓存,所以这很重要。这是RPC,贯穿始终。 – aehlke 2009-08-13 21:34:33

回答

0

我猜这是因为你使用$ver = 0.0; - 有没有0.0版本的API。

+0

我正在尝试不同的版本号,看看是否有所作为。它最初是1.0。我已经在代码示例中将其改回 – 2009-08-13 20:55:03

0

尝试使用api.new.facebook.com API网址代替

2

其余API调用不再有效。 尝试GraphApi