Как разрешить 400 ошибок плохого запроса при попытке отправить сообщение через новый FCM API V1?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как разрешить 400 ошибок плохого запроса при попытке отправить сообщение через новый FCM API V1?

Сообщение Anonymous »

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

Подробнее здесь: https://stackoverflow.com/questions/781 ... ugh-the-ne
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»