如何通过 HTTP 访问 ejabberd admin api?
How to access ejabberd admin api via HTTP?
我阅读了文档 https://docs.ejabberd.im/admin/api/
我想知道如何通过 HTTP 访问那些 API。我尝试访问,但它总是 404。
在 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 都发送到以下 URL:http://host:4560/。
for more detail check here
在你的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 请求。 URL 必须是
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 必须始终是 token
一旦你点击它,它就会呈现这样的屏幕,
输入您的管理员详细信息并点击接受
然后在url你会发现这样的变化
http://localhost:5280/oauth/authorization_token?access_token=Ra9W9aRgeoUgIpN0P68SIGDaatDIVcgB&token_type=bearer&expires_in=3600&scope=get_roster%20connected_users&state=
你可以在那里看到一个访问令牌 copyit 并执行 curl 来获取连接的用户。 (在您的终端中输入此命令)
curl -v POST -H "X-Admin: true" -H "Authorization: Bearer Ra9W9aRgeoUgIpN0P68SIGDaatDIVcgB" http://localhost:5280/api/connected_users -d '[]'
您将收到所有已连接用户的 Json 响应。
这就是您在 ejabberd 中进行 API 调用的方式。希望这有帮助:)
我阅读了文档 https://docs.ejabberd.im/admin/api/
我想知道如何通过 HTTP 访问那些 API。我尝试访问,但它总是 404。
在 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 都发送到以下 URL:http://host:4560/。 for more detail check here
在你的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 请求。 URL 必须是
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 必须始终是 token
一旦你点击它,它就会呈现这样的屏幕,
输入您的管理员详细信息并点击接受
然后在url你会发现这样的变化
http://localhost:5280/oauth/authorization_token?access_token=Ra9W9aRgeoUgIpN0P68SIGDaatDIVcgB&token_type=bearer&expires_in=3600&scope=get_roster%20connected_users&state=
你可以在那里看到一个访问令牌 copyit 并执行 curl 来获取连接的用户。 (在您的终端中输入此命令)
curl -v POST -H "X-Admin: true" -H "Authorization: Bearer Ra9W9aRgeoUgIpN0P68SIGDaatDIVcgB" http://localhost:5280/api/connected_users -d '[]'
您将收到所有已连接用户的 Json 响应。
这就是您在 ejabberd 中进行 API 调用的方式。希望这有帮助:)