Łączenie się z Google Talk przez XMPP na Node.js
Próbowałem użyć różnych bibliotek XMPP dla Node.js i mam problem z połączeniem się z serwerami XMPP Google Talk. Chcę się połączyć i przeczytać status znajomych,ale nie mogę nawet wyjść!
- mam domenę osobistą hostowaną przez Google Apps dla domen, np.
mydomain.com
. -
Mam następujący kod napisany - wykorzystuje bibliotekę 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); });
Połączenie została ustalona, ale uwierzytelnienie nie powiodło się i otrzymuję tę wiadomość z powrotem od 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>
...czy coś przeoczyłem? Próbowałem innych bibliotek (https://github.com/mwild1/xmppjs), a nawet bibliotekę Pythona i nadal nie udało się jej uwierzytelnić. Jestem w 100% pewien, że moja nazwa użytkownika i hasło Google są poprawne - jakieś wskazówki/pomysły?
2 answers
Rozgryzłem to.
Pracowałem z niedokładnymi przykładami.
W moim przykładzie powyżej, będziesz chciał zmienić:
var conn = new xmpp.Component({...})
...do ...
var conn = new xmpp.Client({...})
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-03 20:44:37
Jestem na ubuntu linux więc aby go zainstalować najpierw musiałem to zrobić (najpierw zainstalować node / npm po otrzymaniu potwierdzenia ze strony npm ).
sudo apt-get install libexpat1 libexpat1-dev
npm install node-xmpp
sudo apt-get install libicu-dev
npm install node-stringprep
Z tego fragmentu udało mi się zalogować i wysłać wiadomość z mojego konta gmail do mojego jabber.org konto:
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);
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-04 00:57:51