使用f***g php注销ejabbered用户

Posted

技术标签:

【中文标题】使用f***g php注销ejabbered用户【英文标题】:unregister ejabbered user with f***g php 【发布时间】:2017-01-23 15:17:18 【问题描述】:

我使用f***g php 示例(https://github.com/f***g/xmpp/blob/master/example.php)成功注册新用户。但是当我尝试删除命令时它失败了

<error code='405' type='cancel'><not-allowed xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/><text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>The query is only allowed from local users</text></error>

我注意到即使我没有登录我也可以注册新用户,所以我怀疑我的身份验证没有按预期进行删除。如何使用f***g进行sha1认证?

我可以毫无问题地使用 sha1 auth 从 android 应用程序中取消注册。

【问题讨论】:

【参考方案1】:

我想通了,要注销用户,您必须以该用户身份登录(而要注册,您必须以管理员身份登录)。

$this->implementation = new Implementation($withAuthentication);
$this->options = new \F***g\Xmpp\Options('tcp://...');
$this->options->setImplementation($this->implementation);
$this->options->setLogger($this->logger)
  ->setUsername($xmppuser)
  ->setPassword($xmpppass)
  ->setTimeout(self::XMPP_TIMEOUT);

$this->client = new \F***g\Xmpp\Client($this->options);

$listener = new UnRegistrationListener();
$unRegistrationObj = new UnRegistration();

$this->client->connect();
$this->implementation->registerListener($listener);
$this->client->send($unRegistrationObj);
$this->client->disconnect();

从 ProtocolImplementationInterface 注销消息如下所示:

public function toString()

return \F***g\Xmpp\Util\XML::quoteMessage(
  "<iq id='%s' type='set'><query xmlns='jabber:iq:register'><remove></remove></query></iq>",
  \F***g\Xmpp\Util\XML::generateId()
);

【讨论】:

以上是关于使用f***g php注销ejabbered用户的主要内容,如果未能解决你的问题,请参考以下文章

在从 php 会话注销期间取消设置 cookie 有啥意义?

如何使 PHP 中的用户会话过期?

通过 RESTful 调用注销用户(使会话无效)

您如何在 spring-security 中注销所有已登录的用户?

注销时如何使用户会话无效?

使用 PHP 注销非活动用户