如何通过HTTP访问ejabberd admin api?

时间:2016-05-06 04:37:34

标签: erlang xmpp ejabberd

我读到了关于文档https://docs.ejabberd.im/admin/api/

的内容

我想知道如何通过HTTP访问这些API。我试图访问但它总是404。

2 个答案:

答案 0 :(得分:6)

在你的ejabberd.yml中你可以找到像这样的配置

- 
port: 5280
module: ejabberd_http
request_handlers:
  "/websocket": ejabberd_http_ws

启用api和oauth,

- 
port: 5280
module: ejabberd_http
request_handlers:
  "/websocket": ejabberd_http_ws
  "/api": mod_http_api
  "/oauth": ejabberd_oauth

我们正在使api能够访问其他编程语言(JSON请求和响应)

我们正在启用oauth来提出api请求并获得响应(如果我们访问/ api,我们将只获得401个未经授权的错误)

完成此配置后,在浏览器中提供http请求。网址必须

http://localhost:5280/oauth/authorization_token?response_type=token&client_id=Client1&scope=get_roster+connected_users

get_roster和connected_users是API端点 Clinet1是您可以提供的名称 response_type必须始终为令牌

一旦你点击它,它将呈现一个屏幕,

enter image description here

输入您的管理详细信息,然后单击“接受”

然后在网址中你会发现类似这样的变化

http://localhost:5280/oauth/authorization_token?access_token=Ra9W9aRgeoUgIpN0P68SIGDaatDIVcgB&token_type=bearer&expires_in=3600&scope=get_roster%20connected_users&state=

您可以在其中看到一个访问令牌,并进行卷曲以获取已连接的用户。 (在终端中输入此命令)

curl -v POST -H "X-Admin: true" -H "Authorization: Bearer Ra9W9aRgeoUgIpN0P68SIGDaatDIVcgB" http://localhost:5280/api/connected_users -d '[]'

您将获得所有连接用户的Json响应。

这是你应该如何在ejabberd中进行API调用。希望这会有所帮助:)

答案 1 :(得分:1)

在ejabberd.yml文件中启用ejabberd_xmlrpc取消注释以下行 -

## To handle XML-RPC requests that provide admin credentials:
  ##
  ## - 
  ##   port: 4560
  ##   module: ejabberd_xmlrpc
  ##   maxsessions: 10
  ##   timeout: 5000
  ##   access_commands:
  ##     xmlrpc:
  ##       commands: all
  ##   options: []

所有XMLRPC都发送到以下网址:http://host:4560/for more detail check here