好吧,我可能在做一些愚蠢的事情,但在过去的几个小时里,我一直在用这个把头撞到墙上,到目前为止,我不知道我做错了什么。
目前我正在尝试使用 PLAIN SASL 进行这项工作,因为 Facebook 似乎积极地让 OAuth2 成为非 Web 应用程序的痛苦,但只要我能让它以某种方式工作,它对我来说真的没有什么区别。
当前代码:
_client = new Client(JID(username /* no @chat.facebook.com */), password);
_client->setServer("chat.facebook.com");
_client->setPort(5222);
_client->setSASLMechanisms(gloox::SaslMechPlain);
_client->setTls(gloox::TLSPolicy::TLSRequired);
_client->connect(false);
_client->login(); // not necessary?
QThread::sleep(10); // arbitrary sleep; should be sufficient
std::cout << _client->authed() << std::endl; // false
std::cout << _client->authError() << std::endl; // AuthErrorUndefined
_client->rosterManager()->fill();
// neither one has any effect
MessageSession(_client, JID("friend@chat.facebook.com")).send("balls");
MessageSession(_client, JID("friend")).send("balls");
std::cout << _client->rosterManager()->roster()->size() << std::endl; // 0
编辑:就此而言,我也无法让 Gloox 与 Gmail 一起使用(没有尝试过任何其他 XMPP 服务器)。