如何使用 Graph API 在批处理请求中创建到 instagram 企业帐户的 jsonpath?

How to create a jsonpath to instagram business account in a batch request with the Graph API?

我的目标是创建一个带有相关调用的批处理请求,如下所述: https://developers.facebook.com/docs/graph-api/making-multiple-requests#operations

除了查询字符串参数之外,您还可以在表单 post 参数中引用使用 JSONPath 的先前操作的结果。 当数据数组中有多个元素具有 instagram_business_account.id (iba_id)

时,我无法获得正确的 JSONPath 使其工作

我想打的两个电话是 /me/accounts?字段=instagram_business_account /17841400714813297?fields=business_discovery.username(thomasguntenaar){media_count} 我的批次看起来像

[
{"method":"GET","name":"get-ig", "relative_url":"me/accounts?fields=instagram_business_account"},
{"method":"GET", "relative_url":"{result=get-ig:$.data..instagram_business_account.id}?fields=business_discovery.username(thomasguntenaar){media_count}}"}
]

在第二个查询中,您应该将 JSONPath 放入 Instagram 企业帐户 ID 在 result= 之后 我得到了这个错误

 {
    "code": 404,
    "body": "{
   \"error\": {
      \"message\": \"(#803) Some of the aliases you requested do not exist: 17841400714813297,17841403388404550,17841401383243593\",
      \"type\": \"OAuthException\",
      \"code\": 803,
      \"fbtrace_id\": \"FV8qA+oA7fp\"
   }
}"
  }

Facebook json 第一次调用后的响应是

{
  "data": [
    {
      "id": "466912700123917"
    },
    {
      "id": "502655553273897"
    },
    {
      "instagram_business_account": {
        "id": "17841400714813297"
      },
      "id": "503124266815195"
    },
    {
      "instagram_business_account": {
        "id": "17841403388404550"
      },
      "id": "510613645695833"
    },
    {
      "instagram_business_account": {
        "id": "17841401383243593"
      },
      "id": "2061834074114937"
    }
  ],
  "paging": {
    "cursors": {
      "before": "NDY2OTEyNzAwMTIzOTE3",
      "after": "MjA2MTgzNDA3NDExNDkzNwZDZD"
    }
  }
}

当你这样查询第二个请求时 ?ids=17841400714813297,17841403388404550,17841401383243593&fields=business_discovery.username(thomasguntenaar){username,media_count} 响应看起来像这样


{
  "17841400714813297": {
    "business_discovery": {
      "username": "thomasguntenaar",
      "media_count": 76,
      "id": "17841400714813297"
    },
    "id": "17841400714813297"
  },
  "17841403388404550": {
    "business_discovery": {
      "username": "thomasguntenaar",
      "media_count": 76,
      "id": "17841400714813297"
    },
    "id": "17841403388404550"
  },
  "17841401383243593": {
    "business_discovery": {
      "username": "thomasguntenaar",
      "media_count": 76,
      "id": "17841400714813297"
    },
    "id": "17841401383243593"
  }
}

(#803) Some of the aliases you requested do not exist: 17841400714813297,17841403388404550,17841401383243593

显然 API 认为这应该是 一个 id,并没有意识到它应该是三个独立的。

API 有一种语法,可以在一次请求中请求多个对象的数据 - 而不是 /{id}?fields=foo,您可以发出 ?ids={1,2,3}&fields=foo 形式的请求,以请求一次性获取 ID 为 1、2 和 3 的对象的此数据。生成的数据结构将包含每个 ID 的 sub-structure。

相同的结构应该也适用于批处理请求,当动态插入部分(此处为先前查询返回的 IG 帐户 ID)时。