Отправка уведомлений в Google Cloud Messaging с помощью php дает мне несанкционированную ошибку 401

Поиск некоторой информации о том, как отправлять уведомления с помощью GCM, но с PHP вместо сервлетов, я нашел это: GCM с PHP (Google Cloud Messaging)

Я проверил рабочий код ответов на эти вопросы, также я создал ключ для приложений для браузеров (со ссылками), и я даю разрешения на этот ip: .mywebsite.com / (te php-файл на этом URL- адресе : « http: //www.mywebsite.com/~jma/cHtml5/cap/kk.php ")

Но я получаю этот ответ: Unauthorized Error 401

Что я делаю неправильно?

это файл php:

<?php // Replace with real server API key from Google APIs $apiKey = "fictional key"; // Replace with real client registration IDs $registrationIDs = array( "APA91asdasdSDGGS232S13S4213abGqiNhCIXKjlxrkUYe_xTgTacNGB5n16b380XDd8i_9HpKGRHkvm8DDet4_WK3zumjDEKkTRWLgPS7kO-BrKzWz7eWFQaDD9PJ8zA6hlSqL9_zH21P8K22ktGKmo_VIF6YAdU9ejJovrKBTpgQktYkBZBf9Zw","APAasdasd32423dADFG91bHYYxYB7bFiX5ltbJt6A-4MBiNg7l4RS4Bqf3jIfYviaaUfZ810XJo2o66DY9-jdeJk_JR8FIZCyrmCv-eu_WLkGZ8KaoHgEDR_16H2QPm98uHpe1MjKVXbzYc4J89WMmcIrl5tHhWQnIQNzaI6Zp6yyFUNUQ"); // Message to be sent $message = "Test Notificación PHP"; // Set POST variables $url = 'https://android.googleapis.com/gcm/send'; $fields = array( 'registration_ids' => $registrationIDs, 'data' => array( "message" => $message ), ); $headers = array( 'Authorization: key=' . $apiKey, 'Content-Type: application/json' ); // Open connection $ch = curl_init(); // Set the url, number of POST vars, POST data 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_POSTFIELDS, json_encode( $fields ) ); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //curl_setopt($ch, CURLOPT_POST, true); //curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode( $fields )); // Execute post $result = curl_exec($ch); // Close connection curl_close($ch); echo $result; //print_r($result); //var_dump($result); ?> 

Решено !!!

вы должны использовать Key для серверных приложений (с блокировкой IP) вместо ключа браузера

🙂

Вам необходимо использовать ключ для серверных приложений в поле ключа API в кодировке на стороне сервера. При создании ключа сервера не вводите ничего внутри поля IP-адреса.