【发布时间】:2012-10-06 14:36:45
【问题描述】:
如何将 xmpp windows live messenger 与 php 连接?我正在使用 xmpphp 和 jaxl 库,并且成功连接了 google talk。
【问题讨论】:
标签: xmpp windows-live-messenger xmpphp
如何将 xmpp windows live messenger 与 php 连接?我正在使用 xmpphp 和 jaxl 库,并且成功连接了 google talk。
【问题讨论】:
标签: xmpp windows-live-messenger xmpphp
Jaxl library 内置支持PLAIN、google talk X-OAUTH2、DIGEST-MD5、CRAM-MD5、SCRAM-SHA-1、EXTERNAL 和 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 以建立套接字连接。因此,您必须为jid 和pass 传递虚拟值,如上所示(直到在将来的版本中修复此问题)。
我在没有任何测试的情况下编写了上述步骤,但它应该可以正常工作。有关如何使用JAXLXml 创建 XML 样式的更多详细信息,请参阅here。
【讨论】: