This object is in archive! 

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

Archived Алексей Ч. 11 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
47

Алексей,

Т.е Вы хотите сказать, что один и тот же запрос с идентичным 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. }

This comment is in trash! Restore
photo
44

Да, перешлите crash report на paul@uswebstyle.com

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

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

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

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

This comment is in trash! Restore
photo
49

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

Рассмотрели ваш 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.


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

This comment is in trash! Restore

Replies have been locked on this page!

Your vote is accepted!
Your vote is accepted!
Your vote is accepted!