我正在发出一个异步批处理请求,其中包含 50 个报告发布请求。
第一个批处理请求向我返回报告 ID
第一步
dynamic report_ids = await fb.PostTaskAsync(new
{
batch = batch,
access_token = token
});
接下来,我将获取报告信息,以获取异步状态以查看它们是否已准备好下载。
第二步
var tListBatchInfo = new List<DataTypes.Request.Batch>();
foreach (var report in report_ids)
{
if (report != null)
tListBatchInfo.Add(new DataTypes.Request.Batch
{
name = !ReferenceEquals(report.report_run_id, null) ? report.report_run_id.ToString() : report.id,
method = "GET",
relative_url = !ReferenceEquals(report.report_run_id, null) ? report.report_run_id.ToString() : report.id,
});
}
dynamic reports_info = await fb.PostTaskAsync(new
//dynamic results = fb.Post(new
{
batch = JsonConvert.SerializeObject(tListBatchInfo),
access_token = token
});
第一步中生成的一些 id 返回此错误,一旦我在第二步中调用它们
消息:不支持的获取请求。ID 为"6057XXXXXX"的对象 不存在,由于缺少权限而无法加载,或者 不支持此操作。请阅读图形 API 文档,网址为 https://developers.facebook.com/docs/graph-api
我知道id是正确的,因为我可以在使用facebook api资源管理器中看到它。我做错了什么?
这可能是由Facebook的复制滞后引起的。当您的 POST 请求路由到服务器 A 并返回报告 ID 时,通常会发生这种情况,但对该 ID 的查询会路由到服务器 B,该服务器还不知道报告是否存在。
如果您稍后尝试查询 ID 并且它有效,那么这就是滞后。FB对此的官方建议是在查询报告之前稍等片刻。
https://developers.facebook.com/bugs/250454108686614/