<h2>XMPP XEP-0077</h2>
<p>如果您在Ejabberd服务器上为<a href="http://xmpp.org/extensions/xep-0077.html" rel="noreferrer">In-Band registration</a>激活了<a href="https://git.process-one.net/ejabberd/mainline/blobs/raw/v2.1.11/doc/guide.html#modregister" rel="noreferrer">mod_register</a>,那么,正如@Drake所指出的,您可以使用XMPP库来注册用户。在</p>
<p>在Python中,我建议使用<a href="http://sleekxmpp.com/" rel="noreferrer">Sleek XMPP</a>。<a href="http://sleekxmpp.com/#getting-started-with-examples" rel="noreferrer">Getting started examples</a>是一个很好的起点。在</p>
<h2>HTTP协议</h2>
<p>如果您激活了<a href="https://git.process-one.net/ejabberd/mainline/blobs/raw/v2.1.11/doc/guide.html#modregisterweb" rel="noreferrer">mod_register_web</a>,那么您可以向<code>http://<SERVERNAME>:5280/admin/server/<VIRTUALHOSTNAME>/users/</code>发送一个httppost请求。此URL需要以下3个参数:</p>
<ul>
<li>新用户名</li>
<li>新用户密码</li>
<li>新添加用户</li>
</ul>
<p>其中,<code>addnewuser</code>参数的预期值似乎是字符串“Add User”。在</p>
<p>假设您有一个名为<code>user</code>的<a href="https://git.process-one.net/ejabberd/mainline/blobs/raw/v2.1.11/doc/guide.html#initialadmin" rel="noreferrer">ejabberd admin user</a>,密码为<code>password</code>,对Python使用<a href="http://docs.python-requests.org/en/latest/index.html" rel="noreferrer">requests HTTP library</a>,可以执行如下操作:</p>
<pre><code>import requests
from requests.auth import HTTPBasicAuth
server = "NAME OF YOUR EJABBERD SERVER"
virtualhost = "NAME OF YOUR EJABBERD HOST"
url = "http://%s:5280/admin/server/%s/user/" % (server, virtualhost)
auth = HTTPBasicAuth("user", "password")
data = {
'newusername': "new_user",
'newuserpassword': "new_password",
'addnewuser': "Add User"
}
resp = requests.post(url, data=data, auth=auth)
assert resp.status_code == 200
</code></pre>