Как создать бизнес-аккаунт в jsonpath для Instagram в пакетном запросе с помощью Graph API? - PullRequest
1 голос
/ 11 июня 2019

Моя цель - создать пакетный запрос с зависимыми вызовами, как описано здесь: https://developers.facebook.com/docs/graph-api/making-multiple-requests#operations

Вы можете ссылаться на результаты предыдущей операции, используя JSONPath в параметрах публикации формы в дополнение к параметрам строки запроса. Я не могу получить правильный JSONPath, чтобы он работал, когда в массиве данных есть несколько элементов, которые имеют instagram_business_account.id (iba_id)

Я хочу сделать два звонка: / Мне / счета? Поля = 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 после 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\"
   }
}"
  }

Ответ json от Facebook после первого звонка

{
  "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"
  }
}

1 Ответ

0 голосов
/ 11 июня 2019

(# 803) Некоторые из запрашиваемых псевдонимов не существуют: 17841400714813297,17841403388404550,17841401383243593

Очевидно, API считает, что это должно быть one id, и не понимает, что это три отдельных элемента.

API имеет синтаксис для запроса данных для более чем одного объекта в одном запросе - вместо /{id}?fields=foo вы можете сделать запросв форме ?ids={1,2,3}&fields=foo, чтобы запросить эти данные для объектов с идентификаторами 1, 2 и 3 за один раз.Результирующая структура данных будет содержать подструктуру для каждого из этих идентификаторов.

Эта же структура должна работать и в пакетных запросах, когда части (здесь идентификаторы учетной записи IG, возвращенные предыдущим запросом) динамическивставлена.

...