FCM возвращает 401 несанкционированную ошибку для устройств iOS только с клиентским API Google, использующим PHP - PullRequest
2 голосов
/ 24 апреля 2019

Я использую API FCM HTTP v1 для отправки уведомлений на мобильные устройства. Серверная часть написана с использованием PHP, а я использую клиентскую библиотеку Google API и служебную учетную запись для авторизации моих запросов в FCM. Но я сталкиваюсь с некоторыми странными проблемами, такими как отправка уведомлений на все устройства Android, но fcm возвращает 401 несанкционированную ошибку для устройств iOS. Кроме того, я проверил, используя свое собственное устройство iOS, но fcm всегда возвращает 200 OK, когда я использую свое собственное устройство iOS. Я так запутался, связана ли проблема с моим кодом или какой-либо конфигурацией на мобильном устройстве. Вот как я отправляю уведомления.

$client = new Google_Client();
$client->useApplicationDefaultCredentials(); 
$client->addScope('https://www.googleapis.com/auth/firebase.messaging');
$httpClient = $client->authorize();
$message = [
    "message" => 
    [
        "token" => $device_token,
        "notification" => 
        [
            "body" => $body,
            "title" => "xxxxx"
        ],
        "apns" => 
        [
            "payload" =>
            [
                "aps" => 
                [
                  "category" =>  "NEW_MESSAGE_CATEGORY",
                  "alert" =>  [
                     "body" =>  $body
                  ],
                  "badge" =>  3,
                  "sound" =>  "default",
                  "chat" => 2

                ]
            ]  
        ]
    ]
];
$response = $httpClient->post("https://fcm.googleapis.com/v1/projects/xxxx-123/messages:send", ['json' => $message]);

Что я делаю не так при авторизации? Пожалуйста помоги. Файл учетной записи службы уже добавлен в переменную env GOOGLE_APPLICATION_CREDENTIALS.

...