使用php连接到windows live messenger xmpp

时间:2012-10-06 14:36:45

标签: xmpp windows-live-messenger xmpphp

如何用php连接xmpp windows live messenger?我正在使用xmpphp和jaxl库,并且我与谷歌谈话成功连接。

1 个答案:

答案 0 :(得分:0)

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中所述发送auth数据包:

$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:端口以建立套接字连接。因此,您必须传递jidpass的虚拟值,如上所示(直到在将来的版本中修复此问题)。

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