Подключение к Google Talk по XMPP на Node.js
-
30-09-2019 - |
Вопрос
Я пробовал использовать различные библиотеки XMPP для Node.js, и у меня проблемы с подключением к серверам Google Talks XMPP. Я хочу подключиться и прочитать статус друзей, но я даже не могу получить дверь!
- У меня есть личный домен, размещенный через Google Apps для доменов, например,
mydomain.com
. У меня есть следующий код, написанный код - это использует библиотеку Node-XMPP (https://github.com/astro/node-xmpp):
jid = 'ryan@mydomain.com'; password = 'my_google_password'; // Establish a connection var conn = new xmpp.Component({ jid : jid, password : password, host : 'talk.google.com', port : 5222 }); conn.on('online', function(){ sys.put("ONLINE"); }); conn.on('error', function(e) { sys.puts(e); });
Соединение установлено, но аутентификация не удалась, и я получаю это сообщение от Google Talk:
<stream:error xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client">
<not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-streams"/>
</stream:error>
...я что-то пропустил? Я пробовал другие библиотеки (https://github.com/mwild1/xmppjs), а даже библиотека Python и до сих пор не смогла аутентифицироваться. Я на 100% уверен, что мое имя пользователя и пароль Google верно - любые советы / идеи?
Решение
Догадаться.
Я работал с некоторыми неточными примерами.
В моем примере выше, вы захотите изменить:
var conn = new xmpp.Component({...})
...к...
var conn = new xmpp.Client({...})
Другие советы
Я нахожусь на ubuntu Linux, так что установить его, я сначала должен сделать это (первый узел установки / NPM Следующий рецензировать из веб-сайта NPM).
sudo apt-get install libexpat1 libexpat1-dev
npm install node-xmpp
sudo apt-get install libicu-dev
npm install node-stringprep
С помощью этого фрагмента я успешно вошел в систему и отправил сообщение с моей учетной записи Gmail на мой счет Jabber.org:
var argv = process.argv;
const xmpp = require('node-xmpp');
const sys = require('sys');
if (argv.length != 5) {
sys.puts('Usage: node xmpp.js <my-jid> <my-password> <to>');
process.exit(1);
}
const jid = argv[2];
const password = argv[3];
const to = argv[4];
// Establish a connection
const conn = new xmpp.Client({
jid : jid,
password : password,
host : 'talk.google.com',
port : 5222
});
conn.on('online', function(){
console.log('online');
conn.send(new xmpp.Element('presence'));
conn.send(new xmpp.Element('message',
{ to: to, // to
type: 'chat'}).
c('body').
t('testje'));
});
conn.on('error', function(e) {
sys.puts(e);
});