在尝试获取ejabberd的oauth令牌时获取'access_denied',以调用REST API

时间:2016-07-20 17:33:58

标签: oauth ejabberd

我的主要目的是从我的网站保存用户,shared_rosters,将用户添加到shared_rosters等。我正在使用NodeJS作为后端。

我无法找到任何库来执行上述任务,因此我决定使用带有JSON的REST API,可以使用ejabberd(请共享任何可以执行上述任务的库)。为此,我试图通过oauth为ejabberd获取访问令牌。我已按照ejabberd文档中提到的步骤进行操作。

我已将以下内容添加到我的'ejabberd.yml'文件中。

-
port: 5280
module: ejabberd_http
request_handlers:
  "/websocket": ejabberd_http_ws
  "/log": mod_log_http
  # OAuth support:
  "/oauth": ejabberd_oauth
  # ReST API:
  "/api": mod_http_api
web_admin: true
http_bind: true
captcha: true

还在yml文件中添加了oauth特定参数。

commands_admin_access: configure
commands:
  - add_commands: user
oauth_expire: 3600
oauth_access: all

我不确定oauth参数的放置是否非常重要。我不确定在哪里放置它,所以我把它放在下面一行上面。我在其他页面上看到了这个位置。

### DATABASE SETUP

重新启动Ejabberd。

当我转到以下网址时,我会看到预期的页面

http://example.net:5280/oauth/authorization_token?response_type=token&client_id=Client1&redirect_uri=http://client.uri&scope=get_roster+sasl_auth

现在,当我输入管理员的用户名和密码时,如下所示

User: admin@xxx.xxx.x.xxx
Server: xxx.xxx.x.xxx
Password: admin

我得到了回复

error=access_denied

我不确定我错过了什么。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

实际上,当我输入数据

时,我也做了同样的事情

User: admin Server: xxx.xxx.x.xxx Password: admin

我能够获得令牌。