0

我在调用 ejabberd 的“/api/get_roster”端点时收到 400 错误请求错误。在请求 oauth 令牌时,我将“get_roster”保留在范围内。

ejabberd 中的 400 错误请求错误

我猜是权限有问题。这是我的配置文件:

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

我试图遵循官方文档。根据 API 权限指南,我还尝试添加以下属性:

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

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

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

3 回答 3

0

您的请求应包含 Authorization 标头,如下所示:

curl -v -X POST -H "Authorization: Bearer <Oauth_token>" http://localhost:5280/api/get_roster -d '[]'
于 2017-04-11T15:45:49.543 回答
0

您可以参考此链接了解更多详情。如果您以管理员身份访问,则可以使用commands_admin_accessrule 提供对 api 命令的访问权限,并指定要访问的命令,如下所示:

commands:
  - add_commands:
    - get_roster
commands_admin_access: configure
于 2017-04-17T09:44:23.797 回答
0

您正在使用非常旧版本的 Ejabberd。最新的是 17.04,从 16.01 开始,API 权限框架有很多变化。api_permission 相关配置来自 16.12 版本。请参阅以获取更多详细信息。

于 2017-04-24T07:31:08.290 回答