ejabberd中的xmpp用户授权失败

ejabberd中的xmpp用户授权失败,xmpp,ejabberd,Xmpp,Ejabberd,我已经在ejabberd注册了我的管理员用户。当我尝试使用xmpp php代码在ejabberd中注册新用户时,我遇到了一个错误xmlrpc:error-118执行带有参数的命令register时出现了一个问题“{error,access\u rules\u unauthorized}”。我尝试了很多方法,但没有找到任何解决方案,并且一次又一次地出现相同的错误。是的,这可能会导致为这些API前端正确配置权限,并将身份验证详细信息正确传递给它们的操作变得很棘手 使用如下配置: listen:

我已经在ejabberd注册了我的管理员用户。当我尝试使用xmpp php代码在ejabberd中注册新用户时,我遇到了一个错误
xmlrpc:error-118执行带有参数的命令register时出现了一个问题“{error,access\u rules\u unauthorized}”。我尝试了很多方法,但没有找到任何解决方案,并且一次又一次地出现相同的错误。

是的,这可能会导致为这些API前端正确配置权限,并将身份验证详细信息正确传递给它们的操作变得很棘手

使用如下配置:

listen:
  ...
  -
    port: 4560
    module: ejabberd_xmlrpc

acl:
  admin:
    user:
      - user1@localhost

api_permissions:
  "register command":
    from: ejabberd_xmlrpc
    who:
      access:
        allow:
          acl: admin
    what: register
使用该Python客户端:

import xmlrpclib

server_url = 'http://127.0.0.1:4560'
server = xmlrpclib.ServerProxy(server_url)

EJABBERD_XMLRPC_LOGIN = {'user':'user1', 'server':'localhost', 'password':'mypass11', 'admin':True}

def ejabberdctl(command, data):
    fn = getattr(server, command)
    return fn(EJABBERD_XMLRPC_LOGIN, data)

print ""
print "Calling with auth details..."
result = ejabberdctl('register', {'user':'User5', 'host':'localhost', 'password':'newpass'})
print "Results: "
print result
请记住使用该密码注册user1,或者根据您的管理员帐户修改该脚本

然后执行它,并应正确工作:

$ python test.py 

Calling with auth details...
Results: 
{'res': 0, 'text': 'User User5@localhost successfully registered'}

这回答了你的问题吗?