Javascript 如何将firbase函数从(functions.https.onRequest)更改为(functions.https.onCall)?
我已经完成了实现通知的firebase函数 所以我试图改变函数类型,但失败了。。如何更改此代码Javascript 如何将firbase函数从(functions.https.onRequest)更改为(functions.https.onCall)?,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,我已经完成了实现通知的firebase函数 所以我试图改变函数类型,但失败了。。如何更改此代码 exports.sendNotification = functions.https.onRequest((request,response)=>{ const id = request.body.user_id; const pw = request.body.user_pw; const yourToken = request.body.yourToken; const m
exports.sendNotification = functions.https.onRequest((request,response)=>{
const id = request.body.user_id;
const pw = request.body.user_pw;
const yourToken = request.body.yourToken;
const myToken = request.body.myToken;
var payload = {
notification:{
title : "notify",
body : "suceess to send."
},
data:{
title : "notify",
body : "suceess to send.",
user_id : id,
user_pw : pw,
myToken : myToken,
yourToken : yourToken,
}
};
response.send(admin.messaging().sendToDevice(yourToken, payload));
});
从此代码到
exports.Notification = functions.https.onCall((data,context)=>{
});
这是。如果我正确理解了您的问题,您需要首先了解
onRequest()
(类似HTTPS Express)和onCall()
(可调用)Firebase函数之间的主要区别
发件人:
重要的是要记住,HTTPS可调用函数与HTTP函数相似,但并不完全相同。可调用函数与HTTP函数有以下主要区别:
- 对于可调用项,Firebase身份验证和FCM令牌(如果可用)将自动包含在请求中
- functions.https.onCall触发器自动反序列化请求主体并验证身份验证令牌
exports.sendToDevice = functions.https.onCall(async (data, context) => {
// Data passed from the client using the Callable
const id = data.user_id;
const pw = data.user_pw;
const yourToken = data.token;
const myToken = data.myToken;
var payload = {
notification:{
title : "notify",
body : "suceess to send."
},
data:{
title : "notify",
body : "suceess to send.",
user_id : id,
user_pw : pw,
myToken : myToken,
yourToken : yourToken,
}
};
return await admin.messaging().sendToDevice(yourToken, payload);
);
请注意,数据
可能包含消息文本,而上下文
参数表示用户身份验证信息
context
包含有关请求的元数据,如uid和token,可以找到更多信息
已编辑:
可以找到定义有效负载的示例代码。可以找到
sendToDevice()
方法。哦,我非常感谢您的帮助。没有什么参考资料。谢谢!!但是(admin.messaging.MessagingPayload)中存在一些问题。因为类型批注只能在TypeScript文件中使用。我能做些什么来代替这段代码呢?我刚刚编辑了我的答案,并为sendToDevice()
方法的文档添加了更多的参考。我希望有帮助。