使用 php 连接到 windows live messenger xmpp

Posted

技术标签:

【中文标题】使用 php 连接到 windows live messenger xmpp【英文标题】:Connect to windows live messenger xmpp with php 【发布时间】:2012-10-06 14:36:45 【问题描述】:

如何将 xmpp windows live messenger 与 php 连接?我正在使用 xmpphp 和 jaxl 库,并且成功连接了 google talk。

【问题讨论】:

【参考方案1】:

Jaxl library 内置支持PLAIN、google talk X-OAUTH2DIGEST-MD5CRAM-MD5SCRAM-SHA-1EXTERNAL 和 facebook X-FACEBOOK-PLATFORM 身份验证机制。

它还提供了实现您在应用程序中可能需要的任何自定义身份验证机制的能力。实现X-MESSENGER-OAUTH2 身份验证应该很容易,如下所述:

检查最新版本的JAXL library 并按如下方式初始化您的 JAXL 客户端对象:

require_once 'jaxl.php';
$client = new JAXL(array(
    'jid' => 'messenger.live.com', // <-- dummy jid required for DNS SRV lookup
    'pass' => '',
    'log_level' => JAXL_DEBUG
));

如下所示为on_stream_features事件注册回调,并按照msdn documentation中的描述发送认证包:

$client->add_cb('on_stream_features', function($stanza) 
    global $client, $access_token;
    $auth = new JAXLXml('auth', NS_SASL, array('mechanism'=>'X-MESSENGER-OAUTH2'));
    $auth->t($access_token);
    $client->send($auth);
    return 'wait_for_sasl_response';
);

这应该会让你继续前进。

注意:当前版本的 Jaxl 库依赖输入 jabber id 进行 DNS SRV 查找,从中提取目标 host:port 以建立套接字连接。因此,您必须为jidpass 传递虚拟值,如上所示(直到在将来的版本中修复此问题)。

我在没有任何测试的情况下编写了上述步骤,但它应该可以正常工作。有关如何使用JAXLXml 创建 XML 样式的更多详细信息,请参阅here。

【讨论】:

感谢您的回复。我按照你的方式,但它不起作用。它得到“来自状态处理程序的无效返回值等待流功能

以上是关于使用 php 连接到 windows live messenger xmpp的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上将 PHP 连接到 SQL Server

将 JDeveloper 应用程序连接到 Oracle Live SQL

在 Windows 上使用 PHP 连接到 Advantage 数据库

在IIS7中通过PHP连接到SQL SERVER 2008(使用Windows身份验证)?

使用 PHP 在运行 Windows Server 2012 的物理服务器上连接到 SQL Server 2012

拒绝连接到“wss://live.mysite.com:3000/”,因为它违反了以下内容安全策略指令: