Hi,
I would like to send notification to specific device with the B4J server. I have the Firebase token of the destination device.
I'm in trouble with Firebase authentication.
This is the code, FCMPush with little variation:
This is the error:
Can someone help me?
Thanks in advance
I would like to send notification to specific device with the B4J server. I have the Firebase token of the destination device.
I'm in trouble with Firebase authentication.
This is the code, FCMPush with little variation:
B4X:
'Non-UI application (console / server application)
#Region Project Attributes
#CommandLineArgs:
#MergeLibraries: True
#End Region
Sub Process_Globals
Private const API_KEY As String = "AAAArE0gcBE..."
Private myToken As String = "eiTAn3c39UU..."
End Sub
Sub AppStart (Args() As String)
SendMessage(myToken, "This is the title", "Hello!!!!")
StartMessageLoop
End Sub
Private Sub SendMessage(Token As String, Title As String, Body As String)
Dim Job As HttpJob
Job.Initialize("fcm", Me)
Dim m As Map = CreateMap("token": Token)
Dim data As Map = CreateMap("title": Title, "body": Body)
m.Put("data": data)
Dim jg As JSONGenerator
jg.Initialize(m)
Job.PostString("https://fcm.googleapis.com/v1/projects/myapplication****-78ecd/messages:send", jg.ToString)
Job.GetRequest.SetContentType("application/json")
Job.GetRequest.SetHeader("Authorization", "key=" & API_KEY)
'Job.GetRequest.SetHeader("Authorization", "Bearer " & API_KEY)
End Sub
Sub JobDone(job As HttpJob)
Log(job)
If job.Success Then
Log(job.GetString)
End If
job.Release
StopMessageLoop '<-- non ui app only
End Sub
This is the error:
B4X:
Waiting for debugger to connect...
Program started.
{
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}
[jobname=fcm, success=false, username=
, password=, errormessage=Unauthorized, target=class b4j.example.main
, taskid=1, req=anywheresoftware.b4h.okhttp.OkHttpClientWrapper$OkHttpRequest@50134894, tag=java.lang.Object@2957fcb0
, httputils2service=null]
Program terminated (StartMessageLoop was not called).
Can someone help me?
Thanks in advance