2013-08-31 2 views
0

Я работаю над службой push-уведомлений для Android и следую инструкциям для этого. Я попытался реализовать технику в localhost и преуспеть. Но пока я пытался с моим удаленным сервером, он выдавал мне ошибку «Curl failed: Не удалось подключиться к: Permission denied». Я не знаю, в чем проблема. Я пытался найти решение, но не работало. Вот как я это сделал.Доступ запрещен из завитка на удаленном сервере

Я создал базу данных под названием GCM для облачных сообщений Добавлена ​​следующая строка кода publish_content.php страницы

$username = "given"; 
      $password = "given"; 
      $hostname = "localhost"; 

      //connection to the database 
      $dbhandle = mysql_connect($hostname, $username, $password) 
      or die("Unable to connect to MySQL"); 
//   echo "Connected to MySQL<br>"; 

      //select a database to work with 
      $selected = mysql_select_db("gcm",$dbhandle) 
       or die("Could not select examples"); 


      //execute the SQL query and return records 
      $result = mysql_query("SELECT gcm_regid FROM gcm_users"); 
      $regIds = array(); 
      include_once 'GCM.php'; 
      //fetch tha data from the database 
      while ($row = mysql_fetch_array($result)) { 
       array_push($regIds, $row['gcm_regid']); 

      } 

      foreach($regIds as $item) { 
       $gcm = new GCM(); 
       $registatoin_ids = array($item); 
        $message = array("price" => $message1); 
       $result = $gcm->send_notification($registatoin_ids, $message); 
      } 

      //close the connection 
      mysql_close($dbhandle); 

GCM.php

<?php 

class GCM { 

    //put your code here 
    // constructor 
    function __construct() { 

    } 

    /** 
    * Sending Push Notification 
    */ 
    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=' . GOOGLE_API_KEY, 
      '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; 
    } 

} 

?> 

Он подключается к MySQL и после этого показывает эту ошибку. Пожалуйста помоги мне с этим.

ответ

1

Вы должны включить ключ API (полученный от проекта API Google) в заголовках запроса HTTP:

Authorization: key=YOUR_API_KEY

Вот что разрешает вам отправить сообщение GCM с сервера для вашего приложения ,

EDIT, теперь, когда вы добавили GCM.php код:

Почему отключить SSL?

поддержка

// Отключение SSL сертификата temporarly

curl_setopt ($ ч, CURLOPT_SSL_VERIFYPEER, ложь);

Я не знаю PHP, но я не вижу эту строку в других примерах GCM GCM, таких как this.

И где вы определяете: GOOGLE_API_KEY?

+0

: Я включил этот файл в файл GCM php. – user2522586

+0

@ user2522586 В этом случае вы должны указать свой код «GCM.php» в свой вопрос, чтобы мы могли увидеть, нет ли там чего-то. – Eran

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

  • Нет связанных вопросов^_^