我正在尝试将用户订阅云功能上的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);
}
});