Получение токена доступа API Firebase (HTTP v1) с помощью PHP для отправки push-уведомлений.

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Получение токена доступа API Firebase (HTTP v1) с помощью PHP для отправки push-уведомлений.

До июня 2024 года API Firebase использовал постоянный токен доступа, который можно
было получить один раз в консоли. Однако с теперь необходимо
запрашивать новый токен каждый час. Такой подход повышает безопасность и защищает
от возможной компрометации ключей.
Полный пример страницы Битрикс модуля с получением строки из настроек модуля (из БД):

Код
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_before.php');
$APPLICATION->SetTitle(("Отправка push уведомлений"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");

if (!$USER->IsAdmin())
{
    return;
}

use Bitrix\Main\Loader;
use Bitrix\Main\Config\Option;

Loader::includeModule('mibazarow.pushsender');
use mibazarow\pushsender\GetFirebaseToken;

// Получить JSON-строку из настроек модуля
$jsonString = Option::get('mibazarow.pushsender', 'firebase_json');

// Из настроек модуля
$firebase = new GetFirebaseToken($jsonString);

// Получить токен
$token = $firebase->getAccessToken();

print_r($token);

require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php');
Пример отправки массового push уведомления
Код
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_admin_before.php');
$APPLICATION->SetTitle(("Модуль mibazarow_pushsender_main"));
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php");

use Bitrix\Main\Loader;
use Bitrix\Main\Config\Option;

Loader::includeModule('mibazarow.pushsender');

if (
    (!empty($_POST['PU_NAME'])) and
    (!empty($_POST['PU_MESS'])) and
    (!empty(bitrix_sessid_post()))
) {
    $jsonString = Option::get('mibazarow.pushsender', 'firibase_json');
    $token = \mibazarow\pushsender\FirebaseToken::getAccessToken($jsonString);

    // URL для отправки уведомлений
    $url = 'https://fcm.googleapis.com/v1/projects/ID ВАШЕГО ПРИЛОЖЕНИЯ/messages:send';

    $message = [
        "message" => [
            'topic' => 'main_topik',
            "notification" => [
                'title' => $_POST['PU_NAME'],
                'body' => $_POST['PU_MESS'],
            ]
        ]
    ];

    // Заголовки запроса
    $headers = [
        'Authorization: Bearer ' . $token, // Токен доступа
        'Content-Type: application/json'
    ];

    // Инициализация cURL
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($message));

    // Execute curl session
    $result = curl_exec($ch);
    if ($result === FALSE) {
        echo 'Ошибка: ' . curl_error($ch);
    }
//    echo '<pre>';
//    print_r($result);
//    echo '</pre>';
    curl_close($ch);
    echo 'Отправлено';

    // Закрытие cURL
    curl_close($ch);
}
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 150 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 400 000 руб. от 5-ти недель

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 300 000 руб. от 2-х недель

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфоресурс

от 300 000 руб. от 4-х недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

3D‑моделирование, визуализация

от 25 000 руб. от 3-х дней

По вашим фото, чертежам или описанию создадим 3D‑модели и отрендерим набор изображений для каталога товаров: общий вид, крупные планы и технические ракурсы или 360°‑обзор товара.