如何通过 php 从聊天室 xmpp 服务器中删除成员

how to delete member from chat room xmpp server via php

我正在尝试通过 php 从 XMPP 服务器删除聊天室成员。我正在为此使用 curl 请求。

我正在关注此文档: https://www.igniterealtime.org/projects/openfire/plugins/restapi/readme.html#delete-a-user-from-a-chat-room

$url = "http://188.***.***.***/plugins/restapi/v1/chatrooms/".$roomName."/members/".$userJID;
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/xml", "Authorization : ******")); //I am using plugin.userservice.secret key here
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");    
    $json_response = curl_exec($curl);

        $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        curl_close($curl);

它应该 return 我的 http 响应 201,但我收到服务器的登录表单响应或 401(未授权用户)。

我从上周开始尝试这样做,但一直没有得到任何解决方案,请帮助我。

在此先感谢您的支持。

请注意这个问题是否非常具体:它与特定的 XMPP 服务器实现 (Openfire) 相关,并使用专有的非标准接口(其 REST 插件)。事实上,您正在使用 Android 环境,PHP and/or cURL 是无关紧要的。

当您收到 401 响应时,说明身份验证有问题。

正如 Roman 在下面的评论中指出的那样,您使用了错误的文档。请改用 this

Roman 进行的其他两项观察(带外):

  • "Authorization :"中多了space个字符,需要"Authorization:"
  • 您应该使用的 属性 是 plugin.restapi.secret,而不是 plugin.userservice.secret。

由于这个问题已经得到很好的回答,但我想回答 Android 特定上下文,以便其他遇到此问题的用户可以找到替代方法。 android here. You can integrate it directly as android module. Here is an app already using it. You can also have a look on this client library written in php.

有一个 RestApiClinet 库