照片上传批量请求+多用户出错

时间:2012-11-22 18:14:23

标签: php facebook facebook-batch-request

我有使用publish_stream的应用程序,我可以在我的用户墙上发布状态更新,现在我想发布照片,搜索后我读到了关于batchrequest并使我的代码像那样

<?php 
require_once('./includes/config.php');
require_once('./includes/skins.php');
require_once('./includes/functions.php');
require_once('./includes/facebook.php');
 $app_id = "$appid";
 $app_secret = "$appsec"; 

$sql=mysql_query("select `f_id`, `facebook_access_token` from `users` ");
while($rows = mysql_fetch_array($sql)){
$f_id=$rows['f_id'];
$facebook_access_token=$rows['facebook_access_token'];   
$batched_request = '[{"method":"POST", "relative_url":"'.$f_id.'/photos",' 
    . ' "body" : "message=لو بتحب جاهين و رباعياته اشترك معانا فى التطبيق و هننشرلك على بروفايلك اجمد رباعيات صلاح جاهين http://2lshmaker.uni.me/jahin/", "attached_files":"file1"}}]';

$post_url = "https://graph.facebook.com/" . "?batch="
    . Urlencode($batched_request) . "&". $facebook_access_token 
    . "&method=post";
}  
 echo ' <form enctype="multipart/form-data" action="'.$post_url.'" 
       method="POST">';
 echo 'Please choose 2 files:';
 echo '<input name="file1" type="file">';
 echo '<input type="submit" value="Upload" />';
 echo '</form>';
?>

但它给了我那个错误

{
   "error": {
      "message": "Top level access token or app id not specified for batch request.",
      "type": "GraphBatchException"
   }
}

尽管我已经拥有了publish_stream和有效的access_token

,但我不知道我得到了什么

1 个答案:

答案 0 :(得分:1)

您需要指定顶级访问令牌,即使您为批次中的每个请求包含访问令牌

阅读批处理API文档中标记为“为不同操作指定不同访问令牌”的部分

  

以上所有示例都将单个访问令牌指定为顶级   参数。 Batch API非常灵活,允许个人请求   将自己的访问令牌指定为查询字符串或表单帖子   参数。在这种情况下,顶级访问令牌被视为a   后备令牌,如果单个请求未明确显示,则使用该令牌   指定了一个访问令牌。

     

当您想要使用多个用户查询API时,这可能很有用   不同的访问令牌,或者您是否需要进行某些调用   使用应用程序访问令牌。

     

如果单个请求都没有指定要使用的访问令牌,   您必须包含访问令牌作为顶级参数和此   将用于所有请求。

假设$facebook_access_token=$rows['facebook_access_token'];返回访问令牌列表,则需要在批量中的每个调用中附加,因此$batched_request应具有相同数量的调用以匹配您提供的访问令牌数量。除此之外,如果您提供的任何令牌失败,您需要一个顶级访问令牌,因此很可能它将是应用程序访问令牌作为后备。

特定于您的代码,您甚至没有正确定义顶级访问令牌参数,它应该是

$post_url = "https://graph.facebook.com/" . "?batch=" . Urlencode($batched_request) . "&access_token=". $facebook_access_token . "&method=post";

<强> “&安培; =的access_token”。 $ facebook_access_token
------^MISSING^

那必须是场和价值的形式。 http://en.wikipedia.org/wiki/Query_string