Menggunakan VB.NET untuk mengirim notifikasi ke emulator Android mendapatkan error 401

Saya sedang menulis kode VB.NET untuk mengirim pemberitahuan ke Emulator Android. Saya berhasil mengirim pesan pengujian dari kontrol firebase. Namun, gagal ketika saya mencoba mengirim pesan melalui kode VB.NET di mesin lokal saya dan mendapatkan kesalahan "Server jarak jauh mengembalikan kesalahan: (401) Tidak Sah".

Saya sudah mencoba melihat tautan berikut: FCM (Firebase Cloud Messaging ) Pemberitahuan Push dengan Asp.Net dan mengikuti instruksi tetapi masih tidak berfungsi.

Ini kode saya:

Imports System.Net
Imports Newtonsoft.Json

Public Class Notification

    Public 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 With

        Using 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 Class

Public Class WebRequestFcmData
    Public Property registration_ids As List(Of String)
    Public Property notification As New NotificationData
End Class

Public 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


Kesalahan terjadi pada baris:

Dim httpResponse = CType(request.GetResponse(), HttpWebResponse)

Berikut adalah server key dan sender ID yang saya gunakan: masukkan deskripsi gambar di sini

Diperbarui: Saya mencoba mengirim permintaan web dari aplikasi Tukang Pos dan juga memberikan kesalahan yang sama (401: Tidak Sah) seperti yang ditunjukkan pada gambar di bawah ini:

Memposting Permintaan Web Gagal


person Pawich S.    schedule 09.04.2019    source sumber
comment
kesalahan mana yang Anda dapatkan? Anda setidaknya harus menulis respons Redup Sebagai HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) dan menggunakan respons alih-alih httpResponse   -  person nbk    schedule 10.04.2019
comment
Saya mendapat kesalahan Server jarak jauh mengembalikan kesalahan: (401) Tidak sah. Itu masih terjadi meskipun saya memperbaiki kode seperti yang Anda sebutkan.   -  person Pawich S.    schedule 10.04.2019
comment
401 berarti data akun anda tidak valid. Anda harus memeriksa id dan kunci server   -  person nbk    schedule 10.04.2019
comment
OKE. Saya telah melakukan kesalahan konyol dengan mencari kunci di tempat yang salah. Sekarang, saya menemukan solusinya dan memperbarui jawabannya. Terima kasih nbk atas bantuannya :D   -  person Pawich S.    schedule 11.04.2019


Jawaban (1)


OKE. Saya membuat kesalahan konyol dengan menggunakan Kunci API yang bukan kunci Server sebenarnya. Meskipun saya telah membaca bahwa saya harus membuka tab pesan cloud di pengaturan proyek, saya salah paham bahwa saya harus mencari tab pesan cloud di bilah samping dan itu salah. Inilah langkah di mana saya menemukan kunci server:

  1. Klik tombol pengaturan di dekat Ikhtisar Proyek

    masukkan deskripsi gambar di sini

  2. Pilih opsi pertama (Pengaturan proyek)

    masukkan deskripsi gambar di sini

  3. Klik pada tab kedua (Pesan cloud)

    masukkan deskripsi gambar di sini

  4. Gunakan kunci server dan ID pengirim di halaman ini

    masukkan deskripsi gambar di sini

Pada awalnya, saya mencoba mencari kunci server di tab pesan cloud di sidebar yang lokasinya salah.

masukkan deskripsi gambar di sini

person Pawich S.    schedule 11.04.2019