QuickBooks Онлайн-запрос с фильтром возвращает 401 каждый раз

Я успешно создал объекты с помощью POST и Content-Type application / xml

У меня также был успешный запрос с использованием Content-Type application / x-www-form-urlencoded с пустым телом запроса, которое возвращает все типы объектов в зависимости от того, какой URI я указал.

Я также могу заставить то же самое работать с чем-то вроде PageNum = 1 & ResultsPerPage = 1 в теле запроса, и я выяснил, как включить это в подпись, чтобы я получил действительный ответ.

Однако, независимо от того, как я его отформатирую, я не могу получить ничего, кроме ответа 401, когда пытаюсь использовать фильтр (что-то базовое, например Filter = FAMILYNAME: EQUALS: Doe). Я прочитал спецификации OAuth Core 1.0 Revision A о том, как экранировать все имена и значения параметров, используя процентное кодирование [RFC3986]. Однако я чувствую, что пропускаю шаг или неправильно форматирую. При поиске на форумах Intuit я видел противоречивую информацию о том, что именно является правильным форматом.

Любая помощь по этому вопросу будет принята с благодарностью. Я боролся с этим уже целую неделю.

Ответ, который я получаю при попытке использовать фильтр: HTTP Status 401 - message = Исключительная аутентификация OAuth; ERRORCODE = 003200; StatusCode = 401

----Обновить----

Я вижу ту же ошибку, когда пытаюсь использовать фильтры с Новыми инструментами разработчика IPP - проводником API IPP. Я использую IDS V2 QBO API Explorer. Я могу использовать этот инструмент для извлечения всех сообщений, и в ответе отображаются все мои клиенты, но когда я пытаюсь использовать фильтр, я получаю: Ошибка сервера 401 - Несанкционированный: доступ запрещен из-за неверных учетных данных. У вас нет разрешения на просмотр этого каталога или страницы с использованием предоставленных вами учетных данных.

Есть идеи? Если я получаю ту же ошибку от инструмента API Explorer, это заставляет меня думать, что проблема заключается совсем в другом.

---- Окончательное обновление ----

Я наконец-то добился успеха с фильтрами, и я думаю, что понял, в чем заключалась моя проблема. Я всегда подозревал, что мне удалось заставить работать запросы с нумерацией страниц, например «PageNum = 1 & ResultsPerPage = 1», но я не мог получить что-то вроде «Filter = FAMILYNAME: EQUALS: Doe». Я подозревал, что проблема была с пробелом в формате фильтра. То, что заставило меня отследить это ранее, так это то, что я не смог заставить фильтры работать в IDS V2 QBO API Explorer. Это заставило меня подозревать, что происходит что-то еще. Я решил полностью игнорировать API Explorer и сосредоточиться на том, почему я могу заставить его работать одним способом, а другим - нет.

Я считаю, что моя проблема сводилась к неправильному кодированию значения фильтра в подписи. Это объясняет 401 недействительные ошибки подписи, которые я получал.

«Filter = Name: EQUALS: Doe» становится «Filter = Name% 20% 3AEQUALS% 20% 3Aoe» после нормализации.

Кодировка процента, которая должна давать «Filter% 3DName% 2520% 253AEQUALS% 2520% 253Aoe».

По сути, вы должны «дважды» кодировать пробел и двоеточие, но не знак равенства. Я перепробовал множество вариантов кодирования, но считаю, что моей ошибкой было то, что я либо не был «двойным», либо когда я использовал двойное кодирование, я включал знак «=». В любом случае нарушает вашу подпись. Спасибо за вклад каждого.

Ответы на вопрос(4)

Ваш ответ на вопрос