Следующее консольное приложение .NET8 пытается отправить push-уведомление с помощью нового API Firebase V1.
Я создаю токен-носитель JWT Firebase из сгенерированного консолью Firebase файла Configuration.json, который содержит:
{
"type": "service_account",
"project_id": "myProject",
"private_key_id": "my private key id",
"private_key": "-----BEGIN PRIVATE KEY-----\n DATA \n-----END PRIVATE KEY-----\n",
"client_email": "firebase-adminsdk-XXXX.gserviceaccount.com",
"client_id": "999999999999",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/met ... ccount.com",
"universe_domain": "googleapis.com"
}
При попытке отправить запрос происходит сбой. Он возвращает:
{
"error": {
"code": 401,
"message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/ ... le-project.",
"status": "UNAUTHENTICATED"
}
}
В Visual Studio я вижу, что токен, возвращенный из GetJwtToken, является действительным токеном JWT, срок действия которого истекает за час.
Какая очевидная ошибка? Я делая? Я ошибаюсь, что ему нужен токен JWT?
Существует ли процедура Firebase, которая выдаст мне ожидаемый «токен доступа OUath 2»?
using Google.Apis.Auth.OAuth2;
using RestSharp;
class Program {
static async Task Main(string[] args) {
// Send notification
await SendNotificationAsync();
}
public static async Task SendNotificationAsync() {
const string kMyToken = "myToken";
// Get JWT token
var bearerToken = await GetJwtToken();
// Create client
var client = new RestClient("https://fcm.googleapis.com/v1");
// Create request
var request = new RestRequest("projects/myProject/messages:send", Method.Post);
// Set auth header
request.AddHeader("Authorization", "Bearer " + bearerToken);
// Set content type
request.AddHeader("Content-Type", "application/json");
// Construct notification payload
var payload = new {
message = new {
token = kMyToken,
notification = new {
title = "Test Title",
subtitle = "Test Sub-title",
body = "Test body.",
content_available = true
},
data = new {
key_1 = "posJob",
key_2 = "Value for key_2"
}
}
};
// Add payload to request
request.AddJsonBody(payload);
// Send request
var response = await client.ExecuteAsync(request);
}
public static async Task GetJwtToken() {
try {
// Read credentials file
var json = File.ReadAllText("credentials.json");
// Parse JSON credentials
var credentials = GoogleCredential.FromJson(json);
var scopes = "https://www.googleapis.com/auth/firebase.messaging";
var accessToken = await credentials.UnderlyingCredential.GetAccessTokenForRequestAsync(scopes);
return accessToken;
} catch (Exception ex) {
Console.WriteLine($"Exception: {ex.Message}");
return "";
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/779 ... ith-net8-c
Как создать токен OAuth 2 для API push-уведомлений Firebase V1 с .NET8 C# в Windows? ⇐ C#
Место общения программистов C#
1716465070
Anonymous
Следующее консольное приложение .NET8 пытается отправить push-уведомление с помощью нового API Firebase V1.
Я создаю токен-носитель JWT Firebase из сгенерированного консолью Firebase файла Configuration.json, который содержит:
{
"type": "service_account",
"project_id": "myProject",
"private_key_id": "my private key id",
"private_key": "-----BEGIN PRIVATE KEY-----\n DATA \n-----END PRIVATE KEY-----\n",
"client_email": "firebase-adminsdk-XXXX.gserviceaccount.com",
"client_id": "999999999999",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-xxxxxx.iam.gserviceaccount.com",
"universe_domain": "googleapis.com"
}
При попытке отправить запрос происходит сбой. Он возвращает:
{
"error": {
"code": 401,
"message": "Request had invalid authentication credentials. 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"
}
}
В Visual Studio я вижу, что токен, возвращенный из GetJwtToken, является действительным токеном JWT, срок действия которого истекает за час.
Какая очевидная ошибка? Я делая? Я ошибаюсь, что ему нужен токен JWT?
Существует ли процедура Firebase, которая выдаст мне ожидаемый «токен доступа OUath 2»?
using Google.Apis.Auth.OAuth2;
using RestSharp;
class Program {
static async Task Main(string[] args) {
// Send notification
await SendNotificationAsync();
}
public static async Task SendNotificationAsync() {
const string kMyToken = "myToken";
// Get JWT token
var bearerToken = await GetJwtToken();
// Create client
var client = new RestClient("https://fcm.googleapis.com/v1");
// Create request
var request = new RestRequest("projects/myProject/messages:send", Method.Post);
// Set auth header
request.AddHeader("Authorization", "Bearer " + bearerToken);
// Set content type
request.AddHeader("Content-Type", "application/json");
// Construct notification payload
var payload = new {
message = new {
token = kMyToken,
notification = new {
title = "Test Title",
subtitle = "Test Sub-title",
body = "Test body.",
content_available = true
},
data = new {
key_1 = "posJob",
key_2 = "Value for key_2"
}
}
};
// Add payload to request
request.AddJsonBody(payload);
// Send request
var response = await client.ExecuteAsync(request);
}
public static async Task GetJwtToken() {
try {
// Read credentials file
var json = File.ReadAllText("credentials.json");
// Parse JSON credentials
var credentials = GoogleCredential.FromJson(json);
var scopes = "https://www.googleapis.com/auth/firebase.messaging";
var accessToken = await credentials.UnderlyingCredential.GetAccessTokenForRequestAsync(scopes);
return accessToken;
} catch (Exception ex) {
Console.WriteLine($"Exception: {ex.Message}");
return "";
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/77950422/how-to-create-oauth-2-token-for-firebase-push-notifications-v1-api-with-net8-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия