我一直在关注Firebase Messaging教程一段时间,试图在使用Java和ServiceWorker的基础.Net Core应用程序中获取通知,然后再尝试在主应用程序中实现它。我在使用jQuery的帖子发布消息时失败,响应为401 - "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential
,状态为unauthenticated
。
不记名令牌是原因,因为我使用的是与教程中相同的令牌,这花了我一段时间才意识到,因为我找不到关于此令牌是什么或我需要自己的令牌的任何解释跳过那部分。在详尽浏览了Google文档之后,我发现了https://firebase.google.com/docs/cloud-messaging/auth-server?authuser=0,这是下面评论的人分享的内容。这正是需要的,问题是它是在Node中完成的。对于那些不使用Node的人,不能做任何事。幸运的是,在Google上方,我们声明可以使用Google API Client Library使用我们的首选语言,只是再次遇到了详尽的搜索。 Google API Client Library中似乎没有使用Node示例中使用的相同方法,每种语言显示的单个示例是如何获取令牌以与People服务等Google服务一起使用,以及如何访问用户信息。我不知道如何将其转换为获取OAuth承载令牌以通过FCM进行身份验证,以便可以发送通知。我已经尝试了许多组合,但没有看到任何文档显示可以使用哪些方法来查找Node示例中正在使用的任何类似方法。
我下面只需要一个承载令牌。有谁知道如何使用.Net或JavaScript像Google文档所说的那样获得用于FCM的不记名令牌?
$.post({
method: "POST",
url: "https://fcm.googleapis.com/v1/projects/floridarecycling-b91ec/messages:send",
dataType: "json",
contentType: "application/json",
headers: {
'Authorization': 'Bearer ' + 'ya29.ElqKBGN2Ri_Uz...HnS_uNreA'
},
data: {
"message": {
"token": "my device token",
"notification": {
"body": "This is an FCM notification message!",
"title": "FCM Message",
}
}
},
success: function () { console.log("Success") },
error: function (err) { console.log("error ", err) }
});
$.post({
method: "POST",
url: "https://fcm.googleapis.com/v1/projects/floridarecycling-b91ec/messages:send",
dataType: "json",
contentType: "application/json",
data: {
"message": {
"token": "my device id",
"notification": {
"body": "This is an FCM notification message!",
"title": "FCM Message",
}
}
},
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA')
},
success: function () { console.log("Success") },
error: function (err) { console.log("error ", err) }
});