Реализация GCM с использованием PHP, всегда сталкивающегося с неавторизованной ошибкой 401

Я всегда получаю ошибку 401. Пожалуйста, любой может сообщить мне точно, что должно быть HTTP-серверами, если я использую свой локальный сервер. т.е. в настоящее время я использую:

http://localhost/GCM/index.php 

и генерируя ключ доступа к API, используя его.

Вот мой php-код для запроса GCM.

  $key='mykey'; $headers=array('Contenttype:application/json','Authorization:key='.$key); $url = 'https://android.googleapis.com/gcm/send'; $ch = curl_init(); $curlConfig = array( CURLOPT_URL => $url, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => json_encode(array('field1' => 'some date','field2' => 'some other data',)), CURLOPT_HTTPHEADER => $headers, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, ); curl_setopt_array($ch, $curlConfig); $result = curl_exec($ch); curl_close($ch); if($result==FALSE){ echo curl_error($ch); echo curl_getinfo($ch); }else{ echo $result; } 

Я сражался с той же проблемой. Оказалось, это связано с IPv6! Я создал ключ сервера, как описано в http://developer.android.com/google/gcm/gs.html, используя 0.0.0.0/0 как разрешенный IP-адрес хоста, но это не соответствует IPv6. Поэтому я добавил еще один разрешенный IP-адрес хоста, как 0 :: 0/0, и это сработало (ПОСЛЕ некоторого времени, чтобы обновить кэшированную конфигурацию?).

Оставляя поле пустого поля IP, ЛЮБОЙ IP-адрес становится проще.

Я вижу несколько ошибок:

  1. Contenttype:application/json должен быть Content-Type: application/json .
  2. Вы забыли включить идентификаторы регистрации в JSON.
  3. Я не уверен, CURLOPT_SSL_VERIFYPEER => false ли CURLOPT_SSL_VERIFYPEER => false и CURLOPT_SSL_VERIFYHOST => false .

Вы можете найти много примеров PHP GCM, которые работают (например, здесь ).

Это связано с тем, что вы не включаете IP-адрес для доступа к GCM. Чтобы узнать свой IP-адрес сети « my ip » в GOOGLE, после этого создайте SERVER KEY в Google_Api_Console и используйте ip в генерации SERVER KEY , используйте SERVER KEY в своем php на локальном сервере, первое изображение показывает список ключей в консоли Google для выбора, выберите серверный ключ и второе изображение, чтобы установить ip, что вам нужно включить.

IMG1IMG2