Я всегда получаю ошибку 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-адрес становится проще.
Я вижу несколько ошибок:
Contenttype:application/json
должен быть Content-Type: application/json
. 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, что вам нужно включить.