节点.js xmpp 客户端收到“BAD_REGISTRATION”错误作为消息响应

Node.js xmpp client gets "BAD_REGISTRATION" error as message response

本文关键字:错误 REGISTRATION 响应 消息 BAD xmpp js 客户端 节点      更新时间:2023-09-26

这段代码可能有什么问题?我正在尝试向我的移动设备发送推送通知。到目前为止没有运气..用php做了一些测试,并使用GCM HTTP协议来了解我的API和密码是否正确 - 一切都像魅力一样工作。这是我的代码片段,它不起作用。

var xmpp = require('node-xmpp-client');
var ltx = require('ltx');
var options = {
  jid: 'xxxxxxxxxxx@gcm.googleapis.com',
  password: 'AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  port: 5235,
  host: 'gcm.googleapis.com',
  legacySSL: true,
  preferredSaslMechanism: true
};
var xmppClient = new xmpp.Client(options);
xmppClient.connection.socket.setTimeout(0);
xmppClient.connection.socket.setKeepAlive(true, 10000);
xmppClient.on('online', function() {
  var receiver = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxx-GnbkL2e5UlsS4utMw9rLTFrcsrhqxeH8xvzzzzzzzzzzzzzzzzzzzzzzz";
  /*var rawmsg = '<message id=""><gcm xmlns="google:mobile:data">{"to":"' + receiver + '", "message_id":"m-xxxx123", "data": {"hello":"world"}, "time_to_live":600, "delay_while_idle": true, "delivery_receipt_requested": true }</gcm></message>';
  var msg = ltx.parse(rawmsg);*/
  var msg = new xmpp.Element('message', {id: ''}).c('gcm', {xmlns: 'google:mobile:data'}).t(JSON.stringify({
    to: receiver,
    message_id: 'm-xxxx123',
    time_to_live: 600,
    delay_while_idle: true,
    delivery_receipt_requested: true
  }));
  xmppClient.send(msg);
  ............
  ............
}

这就是"节"事件作为回应的内容。

........","message_id":"m-xxxx123","error":"BAD_REGISTRATION","error_description":""}' ],

根据文档,以下是错误的可能原因。

无效的注册令牌

检查传递给服务器的注册令牌的格式。确保它与客户端应用从向 GCM 注册时收到的注册令牌匹配。不要截断或添加其他字符。

发件人不匹配

注册令牌绑定到特定的一组发件人。当客户端应用注册 GCM 时,它必须指定允许哪些发件人发送消息。向客户端应用发送消息时,应使用这些发件人 ID 之一。如果切换到其他发件人,则现有注册令牌将不起作用。