Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将firbase函数从(functions.https.onRequest)更改为(functions.https.onCall)?_Javascript_Firebase_Google Cloud Functions - Fatal编程技术网

Javascript 如何将firbase函数从(functions.https.onRequest)更改为(functions.https.onCall)?

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

我已经完成了实现通知的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 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()
方法的文档添加了更多的参考。我希望有帮助。