Чтобы получить токен OAuth2 для отправки push-уведомлений через Firebase Cloud Messaging (FCM), вы можете выполнить следующие шаги:
1. **Создание проекта в Google Cloud Console**:
- Перейдите в Google Cloud Console и создайте новый проект или выберите существующий.
- Убедитесь, что у вас включен API Firebase Cloud Messaging.
2. **Создание учетных данных**:
- Перейдите в раздел "Credentials" (Учетные данные).
- Выберите "Create credentials" (Создать учетные данные) и выберите "Service account" (Служебный аккаунт).
- Установите необходимые права доступа для служебного аккаунта. Обычно достаточно "Firebase Admin SDK Admin" или "Firebase Cloud Messaging".
- На этапе создания учетных данных вы сможете скачать файл JSON, который будет содержать необходимые учетные данные.
3. **Использование библиотеки google-auth-library-php**:
- Убедитесь, что библиотека установленная:
```bash
composer require google/auth
```
- Используйте следующий код для получения токена:
```php
require 'vendor/autoload.php';
use Google\Auth\ServiceAccountCredentials;
$serviceAccountFile = '/path/to/your/credentials.json'; // Укажите путь к вашему JSON файлу
$scopes = ['https://www.googleapis.com/auth/firebase.messaging'];
$credentials = new ServiceAccountCredentials(
$scopes,
$serviceAccountFile
);
$token = $credentials->fetchAuthToken();
$accessToken = $token['access_token'];
```
4. **Отправка push-уведомлений**:
- Создайте запрос с заголовком, содержащим ваш токен:
```php
$url = 'https://fcm.googleapis.com/v1/projects/YOUR_PROJECT_ID/messages:send'; // Замените YOUR_PROJECT_ID
$pushData = [
"message" => [
"token" => "TOKEN_FROM_CLIENT", // замените на действительный токен
"notification" => [
"title" => "Breaking News",
"body" => "New news story available."
],
"data" => [
"story_id" => "story_12345"
]
]
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $accessToken,
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($pushData));
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode == 200) {
echo "Notification sent successfully: " . $response;
} else {
echo "Failed to send notification: " . $response;
}
```
5. **Проверка токена регистрации**:
- Ошибка, которую вы получаете, "The registration token is not a valid FCM registration token", означает, что токен, который вы используете для отправки уведомления, недействителен или неправильный. Убедитесь, что вы используете правильный токен регистрации FCM, полученный устройством, на которое хотите отправить уведомление.
Если следовать всем шагам и использовать корректный токен, вы должны суметь успешно отправить push-уведомления через FCM.