使用VB.NET向android模拟器发送通知获取错误401

知是行的主意,行是知的功夫。这篇文章主要讲述使用VB.NET向android模拟器发送通知获取错误401相关的知识,希望能为你提供帮助。
【使用VB.NET向android模拟器发送通知获取错误401】我正在编写VB.NET代码来向android Emulator发送通知。我可以成功从firebase控件发送测试消息。但是,当我尝试通过本地计算机中的VB.NET代码发送消息并收到错误“远程服务器返回错误:(401)未经授权”时,它失败了。
我试过看下面的链接:FCM (Firebase Cloud Messaging) Push Notification with Asp.Net并按照说明操作,但它仍然无法正常工作。
这是我的代码:

Imports System.Net Imports Newtonsoft.JsonPublic Class NotificationPublic Sub SendNotification(ByVal deviceIDList As List(Of String), ByVal title As String, ByVal bodyMsg As String)Dim fcmPath As String = "https://fcm.googleapis.com/fcm/send" Dim serverKey As String = "AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoCAeI" Dim senderID As String = "35xxxxxxx37"Dim request As HttpWebRequest = CType(HttpWebRequest.Create(fcmPath), HttpWebRequest) With request .Method = "POST" .ContentType = "application/json" .Headers.Add(String.Format("Authorization: key={0}", serverKey)) .Headers.Add(String.Format("Sender: id={0}", senderID)) End WithUsing streamWriter = New StreamWriter(request.GetRequestStream()) Dim webObject As New WebRequestFcmData With webObject .registration_ids = deviceIDList .notification.title = title .notification.body = bodyMsg .notification.content_available = True .notification.sound = "default" .notification.priority = "high" End With Dim body = JsonConvert.SerializeObject(webObject) With streamWriter .Write(body) .Flush() .Close() End With End Using Dim httpResponse = CType(request.GetResponse(), HttpWebResponse) Using streamReader As New StreamReader(httpResponse.GetResponseStream) Dim result = streamReader.ReadToEnd End Using End Sub End ClassPublic Class WebRequestFcmData Public Property registration_ids As List(Of String) Public Property notification As New NotificationData End ClassPublic Class NotificationData Public Property body As String Public Property content_available As Boolean Public Property priority As String Public Property title As String Public Property sound As String End Class

错误发生在该行:
Dim httpResponse = CType(request.GetResponse(), HttpWebResponse)

这是我使用的服务器密钥和发件人ID:
使用VB.NET向android模拟器发送通知获取错误401

文章图片

更新:我尝试从Postman应用程序发送Web请求,它也给出了相同的错误(401:Unauthorized),如下图所示:
使用VB.NET向android模拟器发送通知获取错误401

文章图片

答案好。我使用不是实际服务器密钥的API密钥犯了一个愚蠢的错误。即使我已经读到我应该在项目设置中转到云消息传递选项卡,但我误解了我必须查看侧栏中的云消息传递选项卡,这是错误的。这是我找到服务器密钥的步骤:
  1. 单击项目概述附近的设置按钮
    使用VB.NET向android模拟器发送通知获取错误401

    文章图片
  2. 选择第一个选项(项目设置)
    使用VB.NET向android模拟器发送通知获取错误401

    文章图片
  3. 单击第二个选项卡(云消息传递)
    使用VB.NET向android模拟器发送通知获取错误401

    文章图片
  4. 在此页面中使用服务器密钥和发件人ID
    使用VB.NET向android模拟器发送通知获取错误401

    文章图片
起初,我尝试在侧边栏中的云消息传递选项卡中寻找服务器密钥,这是错误的位置。
使用VB.NET向android模拟器发送通知获取错误401

文章图片


    推荐阅读