Ich versuche, von Legacy FCM (Firebase Cloud Messaging) API zur neuen FCM API V1 zu migrieren. Zu diesem Zweck habe ich ein paar Dinge auf der FCM -Seite gemäß der FCM -Dokumentation gemacht. Ich habe das Service -Konto erstellt und die JSON -Datei zur Authentifizierung von Anforderungen heruntergeladen. Mein Code ist in C#, also habe ich auf C# die folgenden Änderungen vorgenommen: < /p>
[*] verwendet OAuth 2.0 zur Authentifizierung. < /Li>
Verwendete die heruntergeladene JSON -Datei, um die Anmeldeinformationen zu erhalten, und diese Anmeldeinformationen zum Generieren des Zugriffs -Tokens verwendet. com/v1/yourProjectId/Nachrichten: Senden
Aktualisierte die JSON -Payload -Struktur. Ich habe geschrieben, um dies zu erreichen: < /p>
PersUser persUser = PersUser.GetPersUser();
string pushToken = persUser.PushNotificationToken;
if (persUser != null && !String.IsNullOrEmpty(pushToken))
{
string senderId = string.Empty;
// Load credentials from the JSON key file
GoogleCredential credential;
using (var stream = new FileStream(@"JSON_FILE_PATH", FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped("https://www.googleapis.com/auth/firebase.messaging");
}
string accessToken = String.Empty;
// Obtain an access token
if (credential != null)
{
var token = await credential.UnderlyingCredential.GetAccessTokenForRequestAsync();
accessToken = Convert.ToString(token);
}
senderId = ConfigurationManager.AppSettings["FIREBASESENDERID"];
var httpWebRequest = (HttpWebRequest)System.Net.WebRequest.Create("https://fcm.googleapis.com/v1/projects/ ... sages:send");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Headers.Add(string.Format("Authorization: Bearer {0}", accessToken));
httpWebRequest.Method = "POST";
var body = new object();
body = new
{
token = pushToken,
notification = new
{
title = "Patient Flow",
body = message,
sound = soundFileName
},
data = new
{
type = notificationType
}
};
string jsonPayload = String.Empty;
var serializer = new JavaScriptSerializer();
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = jsonPayload = serializer.Serialize(body);
streamWriter.Write(json);
streamWriter.Flush();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
string httpResult = streamReader.ReadToEnd();
if (httpResponse.StatusCode != HttpStatusCode.OK)
{
Logger.Write(TraceTyp.DEBUG, String.Empty, "PushNotificationProcessor.SendNotification", string.Format("Push notification for {0} was not successfully delivered.", httpResponse), String.Empty);
}
}
return true;
}
return false;
< /code>
Wenn ich dies debugg, sehe ich einen 400 schlechten Anforderungsfehler unter: < /p>
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
< /code>
Ich habe auch die Lösung ausprobiert, die in Firebase Cloud Messaging Device Group Management über HTTP V1 -Auth vorgeschlagen wurde, aber das hat nicht geholfen. Was ich hier fehlt. Wohin gehe ich möglicherweise falsch?
Wie beheben Sie 400 schlechte Anforderungsfehler, während Sie versuchen, Nachrichten über die neue FCM API V1 zu senden? ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post