2017-04-11 156 views
0

我在调用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" 

但是没有变化。我有以下问题:

  1. 我在做什么错在这里?
  2. 什么是可能的范围?
+0

按照文档注意::要使用get_roster作用域,您需要启用mod_admin_extra。否则,该命令是未知的,你将得到一个invalid_scope错误。 –

+0

我在yml文件的modules部分提到了mod_admin_extra。我没有收到invalid_scope错误。我能够获得令牌。这只是当我在POST调用API端点时使用该标记时,它表示有400个错误的请求。 –

+0

你使用的是什么版本的ejabberd? – Darshan

回答

0

你的请求应该包含授权头如下:

curl -v -X POST -H "Authorization: Bearer <Oauth_token>" http://localhost:5280/api/get_roster -d '[]' 
+0

我在做同样的事情:https://www.dropbox.com/s/rgh88lua0jdytu5/Screen%20Shot%202017-04-11%20at%209.24.13%20PM.png?dl=0 –

+0

您可以共享服务器日志吗? –

+0

这里是https://www.dropbox.com/s/vrlw2gc6p15e5dx/ejabberd_error_log_11_april.log?dl=0。它不承认“api_permissions”属性。我错了吗? –

0

您可以参考这个link了解更多详情。如果您正在访问的管理员可以使用commands_admin_access规则来提供访问API命令,并指定要访问如下的命令:

commands: 
    - add_commands: 
    - get_roster 
commands_admin_access: configure 
0

您正在使用非常古老的版本Ejabberd的。最新的是17.04,从16.01开始,API权限框架发生了很多变化。 api_permission相关配置出现在16.12版本中。请参阅this了解更多详情。

相关问题