2012-11-22 34 views
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

回答

1

你需要指定一个顶级的访问令牌,即使你包括在该批次

每个单独的请求访问令牌,请先阅读标记批次API文档中“指定为不同的操作不同的访问令牌”的部分

所有上述示例将单个访问令牌指定为顶级 参数。批处理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

+0

我真的可以理解错误中写的是什么,问题是什么是顶级访问令牌广告我如何使代码成功工作 –

+0

@phwd添加了文档后,仍然无法帮助。我已经阅读过这些文档,但是他们没有提供工作示例,也没有解释上述代码的错误。这才是重点。这些文档没有帮助,因为它们很模糊,没有提供示例。不是一个有用的答案。 –

+2

请不要提及我,如果你没有什么可说的,除非它没有帮助。这是一条双向的街道。你必须提供你的问题的细节,以获得细节。这确实是OP的问题的解决方案,因为他将PHP中的调用推为“&”。 $ facebook_access_token',它最喜欢等同于'ADXXXXXXAccessToken'而不是'access_token = ADXXXXXXAccessToken'注意缺少'access_token'部分。所以错误确实是正确的,他没有正确指定它。另外请不要输入CAPS,这是一个令人讨厌的方式来关注正在尝试帮助的人 – phwd