- использовал OAuth 2.0 для аутентификации. < /Li>
использовал загруженный файл JSON для получения учетных данных, и использовал эти учетные данные для генерации токена доступа. com/v1/yourprojectid/сообщения: отправить - Обновленная структура полезной нагрузки JSON.
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>
Когда я отлаживаю это, я вижу ошибку плохого запроса 400 по адресу: < /p>
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
< /code>
Я также попробовал решение, предложенное в управлении группой устройств обмена обменами Firebase через HTTP V1 Auth, но это не помогло. < /p>
Пожалуйста, предложите Чего мне здесь не хватает. Где я, возможно, ошибаюсь?
Подробнее здесь: https://stackoverflow.com/questions/781 ... ugh-the-ne