2017-10-08 4 views
0

Comme je l'ai pu remarquer Google de ne pas soutenir la mise en œuvre Curl, je dois aller loin de la mise en œuvre Curl comme je l'ai expliqué dans le post - [FCM could not be sent on GAE due to PHP error - call to undefined function curl_init()FCM - Mise en œuvre loin de curl_init() dans GAE

Je suis en train d'URL aller chercher comme exemple donné à la documentation de la plate-forme Google Cloud - [https://cloud.google.com/appengine/docs/standard/php/issue-requests][1]

Cependant, je suis incapable de rompre la barrière pour travailler avec FCM en raison d'une mauvaise connaissance de PHP.

Ci-dessous, est ce que j'ai essayé -

<?php 

// Establishing FCM connection here to send a token received over to another device. 
function send_fcm_notification_url_fetch ($tokens,$message) { 

    $url = "https://fcm.googleapis.com/fcm/send"; 
    $fields = array('registration_ids' => '<device_token_id>', 
    'data' => 'Hi'); 
    $queryParam = http_build_query($fields); 


    $headers = array('Authorization:key = <firebase_server_key>', 
        'Content-Type: application/json'); 


    $context = array('http' => array('method' => 'POST', 'header' => $headers, 'content' => $queryParam)); 

$context = stream_context_create($context); 
$result = file_get_contents($url,false,$context); 
echo $result; 
return $result; 
} 

?> 

Mais malgré ci-dessus, je reçois ci-dessous erreur -

Avertissement: file_get_contents (https://fcm.googleapis.com/fcm/send): failed to open stream: HTTP demande a échoué! HTTP/1.0 400 Bad Request dans D: \ wamp64 \ www \ androidtrials \ send_fcm_notification_url_fetch.php sur la ligne ##.

Je ne suis pas sûr de ce qui ne va pas. Été à travers la recherche multiple, mais rien ne m'a cédé pour répondre à mes exigences. Est-ce que quelqu'un a fait la messagerie FCM en utilisant PHP, mais pas en utilisant curl? Merci pour votre attention, à la recherche d'aide.

Répondre

0

Sous le code travaillé. La façon dont je composais la requête JSON à FCM était incorrecte. Voici l'implémentation de l'extraction d'URL (non-curl) pour FCM. À l'heure actuelle testé à la configuration du client WAMP.

<?php 

// Establishing FCM connection here to send a token received over to another device. 
function send_fcm_notification_url_fetch ($tokens,$message) { 

    $url = "https://fcm.googleapis.com/fcm/send"; 
    $fields = array('registration_ids' => $tokens, 'data' => $message); 

    $headers = "Authorization:key = <firebase_server_key>\r\n". 
        "Content-Type: application/json\r\n". 
        "Accept: application/json\r\n"; 

    $postData = json_encode($fields); 

    $context = array('http' => array('method' => 'POST', 'header' => $headers, 'content' => $postData)); 

$context = stream_context_create($context); 
$result = file_get_contents($url,false,$context); 

return $result; 
} 

?> 

À tester bientôt avec Google App Engine. Suspect aucune raison, pourquoi cela ne devrait pas fonctionner là ...