2016-10-27 8 views
0

これは私がそれを取得し、プッシュ通知を送信しようとして書いたものです:私が得たGoogle Firebase Cloud Messaging ServerがMoved Temporarilyを返すのはなぜですか?

<?php 
    //send FCM notification 
    $fcmToken = "My device token"; 

    $fcmKey = "My Firebase Cloud Messaging Server Key"; 

    //I tried curl like this but I barely understand it and it wouldn't work 
    //curl -X POST --header "Authorization: key=$fcmKey" --Header "Content-Type: application/json" https://fcm.googleapis.com/fcm/send -d "{\"to\":\"$fcmToken\",\"notification\":{\"body\":\"Yellow\"},\"priority\":10}" 

    echo "starting curl <hr>";  
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, "https://fcm.googleapis.com/fcm/send"); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, array("Authorization: key=$fcmKey","Content-Type: application/json","to: $fcmToken","notification:{\"body\":\"Yellow\"}","priority: 10")); //setting custom header 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    $result = curl_exec($curl); 
    echo "curlResult: " . $result; 
    curl_close($curl); 
    echo "<hr>curl end";  
?> 

出力は、次のように任意の助けを事前になぜ?:

starting curl <hr>curlResult: <HTML> 
<HEAD> 
<TITLE>Moved Temporarily</TITLE> 
</HEAD> 
<BODY BGCOLOR="#FFFFFF" TEXT="#000000"> 
<H1>Moved Temporarily</H1> 
The document has moved <A HREF="https://firebase.google.com/docs/cloud-messaging/http-server-ref">here</A>. 
</BODY> 
</HTML> 
<hr>curl end 

おかげでした!

+0

あなたがリダイレクトされているように聞こえます。これはウェブ上では非常に一般的ですが、なぜGoogleがここでそれをしたのかを推測する理由は多すぎます。あなたは、リダイレクトに従うようにCurlを調べることができます:http://stackoverflow.com/questions/18474690/is-there-a-way-to-follow-redirects-with-command-line-curl –

+0

そうですブラウザにはhttps://firebase.google.com/docs/cloud-messaging/http-server-refに移動します。これは次の場合に発生します。curl_setopt($ curl、CURLOPT_FOLLOWLOCATION、true);しかし、それは意味がありません、それは私が間違ったURLを持っているようですが、それはドキュメントが言うものです。 – Eric

+0

リダイレクトは、何かが動いたときだけでなく、多くの理由で使用されます。たとえば、ウェブサイトにデータをPOSTすると、ほとんどのウェブサイトがあなたにリダイレクトされます。これにより、ブラウザは情報を2回送信しません。同じことがしばしばログインにも当てはまります。最初のリクエストでユーザー名とパスワードが送信され、サーバーはセッションにCookieを渡しながら別のページに転送します。ブラウザは再び、「戻る」をクリックしても2回目のログインを試みません。 –

答えて

0

私は正確に違いを作ったかわからないんだけど、私はそれを動作させるために、この記事に答えを次終わった:保存のため Firebase Cloud Messaging, issues in receiving notification

これはそれが言っている:

<?php 
function send_notification ($tokens) 
{ 

    $url = 'https://fcm.googleapis.com/fcm/send'; 
    $priority="high"; 
    $notification= array('title' => 'Some title','body' => 'hi'); 

    $fields = array(
     'registration_ids' => $tokens, 
     'notification' => $notification 

     ); 


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

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 
    // echo json_encode($fields); 
    $result = curl_exec($ch);   
    echo curl_error($ch); 
    if ($result === FALSE) { 
     die('Curl failed: ' . curl_error($ch)); 
    } 
    curl_close($ch); 
    return $result; 
} 
$tokens = array('RECEIVER-TOKEN-1' 
    ,'RECEIVER_TOKEN-2'); 

$message_status = send_notification($tokens); 
echo $message_status; 
関連する問題