2013-12-26 2 views
0

Я немного смущен. У меня есть сервер приложений на стороне сервера GCM, который использует ключ от Google Developer Console. Я могу создать Android-ключ в соответствии с инструкциями, приведенными в руководстве по началу работы, или я могу создать ключ браузера, ключ сервера или ключ OAuth.GCM Push Server, какой ключ API использовать?

Может кто-нибудь сказать, какой ключ я должен использовать на стороне сервера PHP при отправке сообщений через GCM на устройства Android?

Это функция, которая отправляет сообщение GCM

public function send_notification($registatoin_ids, $message) { 
    // include config 
    include_once './config.php'; 

    // Set POST variables 
    $url = 'https://android.googleapis.com/gcm/send'; 

    $fields = array(
     'registration_ids' => $registatoin_ids, 
     'data' => $message, 
    ); 

    $headers = array(
     'Authorization: key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 
     '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); 

    // Disabling SSL Certificate support temporarly 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

    // Execute post 
    $result = curl_exec($ch); 
    if ($result === FALSE) { 
     die('Curl failed: ' . curl_error($ch)); 
    } 

    // Close connection 
    curl_close($ch); 
    echo $result; 
} 

Очевидно, что строка XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX заменяется моей api_key в исходном коде.

p.s: Мой андроид регистрируется в GCM, у меня есть идентификатор регистрации, отправленный на сервер, это запрос отправки сообщения, который всегда возвращает 401 Несанкционированный, боюсь, что я использую неправильный ключ?

p.s2: Я пробовал все 3 вида API_KEYs без успеха.

+1

Пожалуйста разместим ваш код сервера – Eran

+0

код добавил @Eran – basitj

ответ

0

Убедитесь, что вы включили заголовок «Авторизация» со значением «ключ = APIKEY».

ApiKey может быть либо ключом сервера, либо ключом браузера.

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

+0

Похоже, я уже делал это. Pls взглянуть на код, который я только что добавил к вопросу – basitj

2

решаемые

Я концентрировался на Android или api_key сервера, но я на самом деле должен был использовать ключ браузера.

Кроме того, для первоначального тестирования я удалил все IP-адреса из белого списка, чтобы убедиться, что это не тот фактор, который играет роль.

Теперь у меня есть служба push, работающая с указанным выше кодом, с использованием браузера API Key и IP-ограничения на место для белого листинга.

Приветствия :)

Смежные вопросы