This object is in archive! 
Upvote 1

Запрос по API на добавление коммента выдает ошибку

Archived Алексей Чекушкин 9 years ago

Здравствуйте.

Сделал синхронизацию багзиллы и useresponse. Все работает, но на некоторые запросы возникает ошибка.

Например, при добавлении комментария через /api/json/resources/add-comment/response_id/5/content/text_text_text/vote/0/api_key/key_key_key

Страница выдает "Ошибка" и на почту приходит Crash report.

EXCEPTION: Invalid API Key

Exception on line 267 in file /var/www/response/data/www/response.ispsystem.com/application/modules/system/controllers/Abstract/Api.php, PHP 5.4.4-14+deb7u9 (Linux)


При этом, если текст комментария я кодируют в urlencode, запрос уже отдает 404 ошибка апача.


Как можно отдебажить и понять в чем именно проблема? То, что в ошибке написано invalid api key - никак не связано с реальностью. Т.к. с этим же ключем такой же запрос на с другим текстом сообщения добаляется.

Replies (1)

photo
1

Алексей,

Т.е Вы хотите сказать, что один и тот же запрос с идентичным API ключом, НО с разным значением параметра "content" возвращает ошибку? С каким именно текстом комментария у вас вернулась ошибка?

Если вы делаете отладку своими силами, то обратите внимание на файл /applicationmodules/resources/controllers/ApiController.php, в методе addCommentAction вся суть реализации данного запроса.


Ошибка "Invalid API Key" может быть возвращена если:


  1. Пользователь неактивен, поле "is_active" в БД, таблица "users" не равно 1.
  2. api_key не был задан в запросе.
  3. api_key пустой

Данное исключение выбрасывает прозрачной проверкой на наличие авторизации:


  1. if (!Zend_Auth::getInstance()->hasIdentity()) {
  2. $this->error(self::ERROR_UNAUTHORIZED);
  3. }

photo
1

Да, перешлите crash report на [email protected]

Возможно, вы столкнулись с ограничением длинны запроса используя метод GET.

Если так, то увы, здесь ничего не поделаешь.

В финальной версии 3.* будет представлен RESTfull API, который даст больше преимуществ и удобства.

Тем не менее, мы изучим ваш crash report и дадим ответ.

photo
1

Добрый день, Алексей.

Рассмотрели ваш crash report. Причина, как и подозревали в ограничении длинны GET запроса. Максимальная длина URL не может превышать 2,048 символов, это накладывает некоторые ограничения на использование GET.

До официального релиза 3-ей версии нашего продукта можем предложить вам следующее временное решение:

Выполняйте запрос к API с помощью POST запроса на URL: /api/json/resources/add-comment/response_id/5/api_key/key_key_key

А дополнительные параметры, которые непосредственно содержат в себе ёмкие данные передавайте в теле POST-а:

content <long_long_text>

vote <vote_value>

В качестве дополнительного заголовка кодирования указывайте application/x-www-form-urlencoded.


Надеемся, что данное решение будет для вас работать.

Replies have been locked on this page!