Подключение к Google Talk через XMPP на Node.js

Я пытался использовать различные библиотеки XMPP для Node.js, но у меня возникли проблемы с подключением к XMPP-серверам Google Talk. Я хочу подключиться и прочитать статус друзей, но я даже не могу выйти за дверь!

  1. У меня есть личный домен, размещенный через Google Apps for Domains, например, mydomain.com.
  2. Я написал следующий код - он использует библиотеку node-xmpp (https://github.com/astro/node-xmpp):

    jid = '[email protected]';
    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 верны. Есть советы/идеи?


person RyanTheDev    schedule 03.12.2010    source источник
comment
Кстати, я считаю, что xmppjs - это библиотека компонентов, которую нельзя использовать для подключения к Google.   -  person Alfred    schedule 04.12.2010
comment
может быть, вам следует принять свой собственный ответ, чтобы эту тему можно было закрыть?   -  person Alfred    schedule 05.12.2010


Ответы (2)


Догадаться.

Я работал с некоторыми неточными примерами.

В моем примере выше вы захотите изменить:

var conn = new xmpp.Component({...})

...to...

var conn = new xmpp.Client({...})
person RyanTheDev    schedule 03.12.2010
comment
лол ой. Не правильно прочитал :). Вы уже решили свою проблему :) - person Alfred; 04.12.2010

Я на Ubuntu Linux, поэтому, чтобы установить его, мне сначала пришлось сделать это (сначала установить node/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);
});
person Alfred    schedule 03.12.2010
comment
Как я могу подключиться к xmpp без использования модуля node-xmpp - person Rohit; 07.10.2015