在Node中发送GCM推送

时间:2014-02-08 19:00:00

标签: android node.js curl google-cloud-messaging

我遇到了Node应用程序向Google Cloud Messaging发送邮件的问题。我已经创建了API密钥(服务器和浏览器),我已经在服务器密钥服务器IP和代码中列入白名单

        var headers = [
            'Content-Type: application/json',
            'Authorization: key=' + apiKey
        ];

        curl("https://android.googleapis.com/gcm/send", {
            HTTPHEADER: headers,
            POST: true,
            POSTFIELDS: JSON.stringify({
                data: {
                    type: 'xxx',
                    city: 'xxx',
                    url: 'xxx'
                },
                registration_ids: [phoneId]
            })
        }, function () {
            console.log(arguments);
        });

我正在尝试向Android设备发送简单通知。不幸的是,我收到 401 Unauthorized 错误。我使用node-curl库,之前我尝试了node-gcmnode-gcm-service - 两者都有相同的结果。有没有可能我错过了?

先谢谢你的帮助, 的Dawid。

4 个答案:

答案 0 :(得分:2)

当使用节点js发送推送通知时,我们可以使用以下代码

var gcm = require('node-gcm'),
    gcm_message = new gcm.Message(),
    sender = new gcm.Sender(GCM_API_KEY),
    RETRY_COUNT = 4;

gcm_message.addDataWithKeyValue('key1', message);
gcm_message.delayWhileIdle = true;

sender.send(gcm_message, registrationIds, RETRY_COUNT, function(err, result) {
    callback(err, result);
});

答案 1 :(得分:1)

我认为您使用的是不正确的API密钥,这就是您失败的原因。您必须使用Google云端控制台的API服务器密钥。

答案 2 :(得分:0)

你必须在php中使用连接运算符来将值附加到键

'Authorization: key=' . $apiKey

答案 3 :(得分:0)

我遇到了同样的问题。 "错误401"之所以发生,是因为我忘了在Google Developers Console中启用API - Google Cloud Messaging for Android。启用它后工作。希望它可以帮到你。