Чтобы получить OAuth2 токен для использования с Firebase Cloud Messaging (FCM) при отправке пуш-уведомлений, вы можете воспользоваться библиотекой `google/auth` (или `google/auth-library-php`), а не `google-api-php-client`, как в вашем примере. Давайте пройдемся по шагам:
1. **Убедитесь, что у вас есть файл `credentials.json`**: Он должен содержать данные вашей службы, с настройками учетной записи. Вы можете создать и скачать этот файл из [Google Cloud Console](https://console.cloud.google.com/).
2. **Установите необходимую библиотеку**: Вы можете установить библиотеку `google/auth` через Composer, если у вас ее еще нет:
```bash
composer require google/auth
```
3. **Получите токен OAuth2**: Используйте следующий код, чтобы получить токен для аутентификации при отправке пуш-уведомлений:
```php
require 'vendor/autoload.php';
use Google\Auth\OAuth2;
// Укажите путь к вашему credentials.json
$keyFilePath = '/var/www/html/credentials.json';
// Создаем объект OAuth2
$oauth2 = new OAuth2([
'audience' => 'https://fcm.googleapis.com/',
'issuer' => 'YOUR_SERVICE_ACCOUNT_EMAIL', // замените на email вашей служебной учетной записи
'signingAlgorithm' => 'RS256',
'signingKey' => file_get_contents($keyFilePath),
'subject' => 'YOUR_SERVICE_ACCOUNT_EMAIL', // Здесь также укажите email вашей службы
'scope' => 'https://www.googleapis.com/auth/firebase.messaging',
]);
// Получаем токен
$oauth2->setExpirationTime(3600); // Указываем время жизни токена (по умолчанию 1 час)
$token = $oauth2->fetchAuthToken();
// Делаем запрос к FCM
$authorizationHeader = 'Bearer ' . $token['access_token'];
// Пример запроса с использованием CURL
$url = 'https://fcm.googleapis.com/v1/projects/YOUR_PROJECT_ID/messages:send'; // замените на ваш проект
$data = [ /* ваши данные сообщения */ ];
$options = [
'http' => [
'header' => [
'Authorization: ' . $authorizationHeader,
'Content-Type: application/json',
],
'method' => 'POST',
'content' => json_encode($data),
],
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result; // Ответ от FCM
```
**Обратите внимание**:
- Замените `YOUR_SERVICE_ACCOUNT_EMAIL` на email вашей службы (это будет что-то вроде `your_service_account@your_project.iam.gserviceaccount.com`).
- Замените `YOUR_PROJECT_ID` на идентификатор вашего проекта в GCP.
- Подберите данные для отправки уведомлений в массив `$data`.
Теперь вы получите доступ к вашему токену и сможете отправлять пуш-уведомления через FCM, используя полученный токен в заголовке `Authorization`.