У меня есть токен идентификатора устройства, который я получаю из пакета firebase_messaging, выполнив этот код:
FirebaseMessaging messaging = FirebaseMessaging.instance;
String? token = await messaging.getToken();
print("DEVICE TOKEN $token");
У меня есть токен идентификатора и токен доступа из пакета firebase_auth, запустив этот код:
final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn _googleSignIn = GoogleSignIn();
final GoogleSignInAccount? googleUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
final AuthCredential credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
final UserCredential userCredential = await _auth.signInWithCredential(credential);
final User? user = userCredential.user;
final idToken = await user.getIdToken();
final accessToken = googleAuth.accessToken;
print('ID Token: $idToken');
print('Access Token: $accessToken');
Теперь у меня есть значение DEVICE TOKEN, ID Token, Access Token, и я пытаюсь отправить уведомление один к одному с помощью API-почтальона, вот свойство почтальона:
POST : https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send
{
"message":{
"token":"DEVICE TOKEN",
"notification":{
"body":"This is an FCM notification message!",
"title":"FCM Message"
}
}
}
для заголовка:
Authorization: Bearer "MY Access Token"
и я получил результат:
{
"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"
}
}
Есть ли способ решить эту проблему, честно говоря, я немного запутался, потому что у меня есть значение DEVICE TOKEN, ID Token, Access Token, но я не использую ID Token при отправке полезных данных в почтальоне.
API облачных сообщений @Aks (устаревшая версия) отключен. В консоли Firebase есть примечание: «Если вы уже являетесь пользователем устаревших API-интерфейсов HTTP или XMPP (устарело 20.06.2023), вы должны перейти на последнюю версию Firebase Cloud Messaging API (HTTP v1) до 20.06. 2024"
Ладно, моя вина. Итак, я думаю, вы это уже пробовали: apoorv487.medium.com/…
@Aks Я попробую сегодня, но хотел бы спросить: в этой статье мне нужно открыть игровую площадку OAuth 2.0, чтобы получить токен FCM. Могу ли я сгенерировать токен FCM во флаттере, не открывая игровую площадку OAuth 2.0?
вам необходимо добавить токен на предъявителя при авторизации.
В этой статье. Есть 3 способа сделать это. С детской площадкой, почтальоном и терминалом. Итак, да, вы можете получить токен fcm во флаттере, не открывая игровую площадку.





Согласно документации по авторизации запросов на отправку в API FCM v1 токен доступа должен быть сгенерирован из учетной записи службы, а это, похоже, не то, что делает ваш код.
Для своей реализации используйте пример кода из документации здесь . Вы заметите, что во Flutter нет примера кода, позволяющего сделать это, потому что (как я также прокомментировал ваш предыдущий вопрос) этот процесс должен выполняться в доверенной среде, а не в вашем приложении Flutter.
Попробуйте это: apoorv487.medium.com/…