0

我有带有 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,但我不知道我得到了什么

4

1 回答 1

1

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

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

上述所有示例都将单个访问令牌指定为顶级参数。Batch API 非常灵活,允许各个请求将自己的访问令牌指定为查询字符串或表单发布参数。在这种情况下,顶级访问令牌被视为后备令牌,并且在单个请求未明确指定访问令牌时使用。

当您想要使用多个用户的不同访问令牌查询 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

于 2012-11-22T18:41:46.577 回答