Ошибка API Firebase. Аутентификация с использованием ключа сервера устарела. Вместо этого используйте токен OAuth2.Php

Кемеровские программисты php общаются здесь
Anonymous
Ошибка API Firebase. Аутентификация с использованием ключа сервера устарела. Вместо этого используйте токен OAuth2.

Сообщение Anonymous »

Я хочу подписаться на тему Firebase FCM с PHP и меняю свой старый код на этот:

Код: Выделить всё

// Path to your service account key file (JSON)
$serviceAccountFile = PAD_PLUGIN_DIR . 'positive-notch-181410-2bc8875c71a4.json';

// Your FCM Topic name
$topicName = get_the_category($post_id)[0]->slug;

// Device token to subscribe
$deviceToken = 'fuEMCQmCT_m0H3fdoXqD9m:APA91bGITP85Q6y3Zg3_Ls9bjbPKMBylwHads9hQbkzDJCeeOtlHfJZqxX4hIAJMeOoKYCfm59ki95tOpNViORr6cy4ATuCaDAubCkj1pdXzQsrI1lMeesZYRt-B_vCJO6R55NLfZRoM';

// Initialize Google Client
$client = new Google_Client();
$client->setAuthConfig($serviceAccountFile);
$client->addScope('https://www.googleapis.com/auth/firebase.messaging');

// Get an OAuth2 access token
$accessToken = $client->fetchAccessTokenWithAssertion();
$accessTokenString = $accessToken['access_token'];

$subscriptionUrl = 'https://iid.googleapis.com/iid/v1:batchAdd';

$data = [
'to' => '/topics/blabla',
'registration_tokens' => [$deviceToken]
];

$ch = curl_init($subscriptionUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $accessTokenString,
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode == 200) {
echo "Successfully subscribed to topic.";
} else {
echo "Failed to subscribe: " . $response;
}

exit;
Я выполнил все инструкции шаг за шагом, но не могу подписаться на тему fcm, но каждый раз получаю ошибку 401. Аутентификация с использованием ключа сервера устарела. Вместо этого используйте токен OAuth2. .
Я также убедился, что $accessTokenString действителен и не истек срок его действия, и это так.
Конечно У меня есть проект Google Cloud с включенным FCM и файлом ключей JSON сервисного аккаунта.
Кто-нибудь знает, в чем проблема?
Спасибо
п>

Подробнее здесь: https://stackoverflow.com/questions/789 ... ase-use-an

Вернуться в «Php»