0

Я использую Appengine и загружаю тестовый скрипт для отправки сообщения через GCM, но он включает 401 Несанкционированную ошибку.GCM Неавторизованный с PHP AppEngine

Следуйте мой сценарий

$url = 'https://android.googleapis.com/gcm/send'; 
$serverApiKey = "AIzaSyCKPMazvtdyhqhH7IdIqdHjqUtLNlHnsgA"; // API KEY SERVER 
$reg = "APA91bEmal_3NpDSV5vuIysMjF8GYxO70_2Nmzx78VCSLmGpX_oX73TqfHczzjP_PgUmwYcdGz0yPGAajRLb1eP7wfzqtoADMzL1-DoCLYH9kz2dKknwcd7fZFSg_qM6Cgk_gphIRWD2FbcJZ83-ymnF1UhF40j32vYzD7WCDZnq_0-87R5Dbmk"; // registration id 

$headers = array(
'Content-Type:application/json', 
'Authorization:key=' . $serverApiKey 
); 

$data = array(
'registration_ids' => array($reg), 
'data' => array(
'message' => 'Hello, World!' 
)); 

print (json_encode($data) . "\n\n"); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
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($data)); 

$response = curl_exec($ch); 

curl_close($ch); 

print ($response); 

Если я сделать то же испытание на моей локальной машине, она работает, но на AppEngine не работает

http://s3.postimg.org/ndzcfujoj/local_machine_1.png

http://s17.postimg.org/f48alja3z/local_machine_2.png

.. .in appengine не работает

{"registration_ids":["APA91bEmal_3NpDSV5vuIysMjF8GYxO70_2Nmzx78VCSLmGpX_oX73TqfHczzjP_PgUmwYcdGz0yPGAajRLb1eP7wfzqtoADMzL1-DoCLYH9kz2dKknwcd7fZFSg_qM6Cgk_gphIRWD2FbcJZ83-ymnF1UhF40j32vYzD7WCDZnq_0-87R5Dbmk"],"data":{"message":"Hello, World!"}} 
Unauthorized 
Error 401 

следует настройки API

Key for server applications 
API key 
AIzaSyCKPMazvtdyhqhH7IdIqdHjqUtLNlHnsgA 
IPs 
Any IP allowed 
Activation date 
Mar 12, 2015, 2:40:00 AM 

Может кто-нибудь мне помочь?

ответ

0

Попробуйте использовать ключ браузера. Ключ сервера работает с общедоступного IP-адреса. Также вы должны указать белый IP-адрес.

+0

создал браузер API, но это случилось с той же проблемой ... Здесь ключ браузер API .... Ключ для браузерных приложений API ключ AIzaSyBDLrlKSotjkf0u46veF_Y8JfOx0nTZIVU Обратные ссылки Любой разрешенный референт Дата активации 12 мар 2015, 4:58:00 –

0

Я не знаю, по какой причине cURL не работает. Я сделал это по-другому, и она работала

$regId = "myid"; 
    $message = "Hello World!"; 


    $registrationIds = array($regId); 
    $msg = array('message' => $message, 'title' => 'notification center', 'tickerText' => $message, 'vibrate' => 1, 'sound' => 1,); 

    $fields = array(
     'registration_ids' => $registrationIds, 
     'data' => $msg 
    ); 
    $fields = json_encode($fields); 
    $arrContextOptions=array(
     "http" => array(
      "method" => "POST", 
      "header" => 
       'Authorization: key = MyApiKey'. "\r\n" . 
       'Content-Type: application/json'. "\r\n", 
      "content" => $fields, 
     ), 
     "ssl"=>array(
      "allow_self_signed"=>true, 
      "verify_peer"=>false, 
     ), 
    ); 
    $arrContextOptions = stream_context_create($arrContextOptions); 
    $result = file_get_contents('https://android.googleapis.com/gcm/send', false, $arrContextOptions); 

    echo $result;