知是行的主意,行是知的功夫。这篇文章主要讲述使用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:
文章图片
更新:我尝试从Postman应用程序发送Web请求,它也给出了相同的错误(401:Unauthorized),如下图所示:
文章图片
答案好。我使用不是实际服务器密钥的API密钥犯了一个愚蠢的错误。即使我已经读到我应该在项目设置中转到云消息传递选项卡,但我误解了我必须查看侧栏中的云消息传递选项卡,这是错误的。这是我找到服务器密钥的步骤:
- 单击项目概述附近的设置按钮
文章图片
- 选择第一个选项(项目设置)
文章图片
- 单击第二个选项卡(云消息传递)
文章图片
- 在此页面中使用服务器密钥和发件人ID
文章图片
文章图片
推荐阅读
- Apple在应用程序中拒绝了facebook登录应用程序
- 在Android Studio中渲染导航抽屉预览中的问题
- 根据maxWidth,Android TextView文本无法正确换行
- 使用Android Jetpack导航时如何防止导航
- 进程“... androiddeployqt.exe”退出,代码为14
- 如何模拟Android系统杀死的服务
- 设置com.google.android.material.chip.Chip选择的颜色
- android studio - R未解决+ Clean项目无效
- 我如何使用“sdk / color.xml”中“app / color.xml”中提到的颜色()