Ошибка 400 неверный запрос при вызове API ejabberd

Я получаю ошибку 400 неверных запросов при вызове конечной точки "/api/get_roster" ejabberd. Я сохранил «get_roster» в области при запросе токена oauth.

ошибка 400 неверных запросов в ejabberd

Я предполагаю, что есть некоторые проблемы с разрешениями. Вот мой файл конфигурации:

https://www.dropbox.com/s/his89bx39qhvr1h/ejabberd2.yml?dl=0

Я пытался следовать официальной документации. В соответствии с руководством по разрешениям API я также попытался добавить следующие свойства:

api_permissions:
  - "Admin access":
    - who:
      - admin
    - what
      - "\*"
      - "!stop"

Но изменений не было. У меня есть следующие вопросы:

  1. Что я здесь делаю неправильно?
  2. Каковы возможные масштабы?

person Vikas Roy    schedule 11.04.2017    source источник
comment
Согласно документу, Примечание:: Чтобы использовать область действия get_roster, вам необходимо включить mod_admin_extra. В противном случае команда неизвестна, и вы получите ошибку invalid_scope.   -  person Girdhar Sojitra    schedule 11.04.2017
comment
Я упомянул mod_admin_extra в разделе модулей файла yml. Я не получил ошибку invalid_scope. Я могу получить токен. Просто когда я использую этот токен в вызове POST к конечной точке API, он говорит, что 400 неверный запрос.   -  person Vikas Roy    schedule 11.04.2017
comment
Какую версию ejabberd вы используете?   -  person Darshan    schedule 15.04.2017
comment
Я использую ejabberd 16.01.   -  person Vikas Roy    schedule 16.04.2017


Ответы (3)


Ваш запрос должен содержать заголовок авторизации, как показано ниже:

curl -v -X POST -H "Authorization: Bearer <Oauth_token>" http://localhost:5280/api/get_roster -d '[]'
person Girdhar Sojitra    schedule 11.04.2017
comment
Я делаю то же самое: dropbox.com/s/rgh88lua0jdytu5/ - person Vikas Roy; 11.04.2017
comment
здесь это dropbox.com/s/vrlw2gc6p15e5dx/. он не распознает свойство api_permissions. Я потерял его? - person Vikas Roy; 11.04.2017
comment
Судя по логам, модуль oauth запущен неправильно. - person Girdhar Sojitra; 11.04.2017

Вы можете перейти по этой ссылке для получения более подробной информации. Если вы входите в качестве администратора, вы можете использовать правило commands_admin_access для предоставления доступа к командам API и указать команды, к которым вы хотите получить доступ, следующим образом:

commands:
  - add_commands:
    - get_roster
commands_admin_access: configure
person The Maverick    schedule 17.04.2017

Вы используете очень старую версию Ejabberd. Последней версией является 17.04, которая имеет множество изменений в структуре разрешений API по сравнению с 16.01. Конфигурация, связанная с API_permission, появилась в версии 16.12. Дополнительные сведения см. в этом.

person Darshan    schedule 24.04.2017