400调用ejabberd api时出现错误的请求错误
我在调用ejabberd的“/ api/get_roster”端点时收到400错误的请求错误。在请求oauth令牌时,我一直在范围内保留“get_roster”。400调用ejabberd api时出现错误的请求错误
400 bad request error in ejabberd
我想有一些问题与权限。下面是我的配置文件:
https://www.dropbox.com/s/his89bx39qhvr1h/ejabberd2.yml?dl=0
我曾试图按照官方文档。根据API许可指南,我也尝试添加以下属性:
api_permissions:
- "Admin access":
- who:
- admin
- what
- "\*"
- "!stop"
但是没有变化。我有以下问题:
- 我在做什么错在这里?
- 什么是可能的范围?
你的请求应该包含授权头如下:
curl -v -X POST -H "Authorization: Bearer <Oauth_token>" http://localhost:5280/api/get_roster -d '[]'
我在做同样的事情:https://www.dropbox.com/s/rgh88lua0jdytu5/Screen%20Shot%202017-04-11%20at%209.24.13%20PM.png?dl=0 –
您可以共享服务器日志吗? –
这里是https://www.dropbox.com/s/vrlw2gc6p15e5dx/ejabberd_error_log_11_april.log?dl=0。它不承认“api_permissions”属性。我错了吗? –
您可以参考这个link了解更多详情。如果您正在访问的管理员可以使用commands_admin_access
规则来提供访问API命令,并指定要访问如下的命令:
commands:
- add_commands:
- get_roster
commands_admin_access: configure
您正在使用非常古老的版本Ejabberd的。最新的是17.04,从16.01开始,API权限框架发生了很多变化。 api_permission相关配置出现在16.12版本中。请参阅this了解更多详情。
按照文档注意::要使用get_roster作用域,您需要启用mod_admin_extra。否则,该命令是未知的,你将得到一个invalid_scope错误。 –
我在yml文件的modules部分提到了mod_admin_extra。我没有收到invalid_scope错误。我能够获得令牌。这只是当我在POST调用API端点时使用该标记时,它表示有400个错误的请求。 –
你使用的是什么版本的ejabberd? – Darshan