400不良请求错误在将用户订阅到云功能中的主题时



我正在尝试将用户订阅云功能上的firebase主题。因此,根据官方文档,我尝试了以下代码

 request({
        method: 'POST',
        url: "https://iid.googleapis.com/iid/v1:batchAdd",
        json: true,

        headers: {
            'Content-Type':'application/json',
            'Authorization':'key=server key,
        },
        body: JSON.stringify({
          "to": "/topics/name",
          "registration_tokens": ["token value"]
        })
            }, function (error, response, body){
        console.log('error:', error);
        console.log('statusCode:', response && response.statusCode);
        if (response.statusCode >= 400) {
            console.error('HTTP Error: '+response.statusCode+' - '+response.statusMessage);
          }
    });

,但它提供了400个状态代码,而不是200。谢谢。

您需要适当的授权才能使用Google API。你输入了吗?(在代码的标题部分上(。也许是一个线索:如果您在浏览器的地址栏中输入代码上指示的URL,则会发现:

{"error":"MissingAuthorization"}

正如您所指出的那样,错误400是不良请求,即,您可能在请求措施上犯了一些错误。W3C状态:

The request could not be understood by the server due to malformed syntax

也许此畸形的语法是没有此授权,提高了此错误400。

我显然发现了与将设备订阅到主题的不同文档。该文档说使用以下格式的URL:

https://iid.googleapis.com/iid/v1/IID_TOKEN/rel/topics/TOPIC_NAME

使用此方法的代码上的变体在下面。这个对我有用。但是使用admin.messaging((。sisscribeTopic((?

,不是很简单吗
 const token = 'f_PWaiHMGvQ:APA91bGN...9F5D5avIpjY57Y098OFsxZLHUZubx0P_';
 const serverKey = 'AAAAyq9marw:APA91b..._Xf-jV472nfn-sb';
 request({
        method: 'POST',
        url: `https://iid.googleapis.com/iid/v1/${token}/rel/topics/myTopic`,
        headers: {
            'Content-Type':'application/json',
            'Content-Length': 0,
            'Authorization':`key=${serverKey}`,
        }
}, function (error, response, body){
    console.log('error:', error);
    console.log('statusCode:', response && response.statusCode);
    if (response.statusCode >= 400) {
        console.error('HTTP Error: '+response.statusCode+' - '+response.statusMessage);
      }
});

相关内容

  • 没有找到相关文章

最新更新