2017-03-06 6 views
2
私はFirebaseクラウドメッセージングおよび私が直面してる問題を送信するつもり

にFirebaseクラウドメッセージングに不正なエラー401を取得すると、私はからセキュリティキーを持って401curlコマンド

不正なエラーを取得している私FirebaseのWebサイトで設定します。デバイストークンはすでにデータベースにあり、問題なくデータベースから読み込みます。 これは、これまでの私のコードです:FCMを使用している場合

<?php 

function send_notification($tokens, $message) 
{ 
    $url = 'https://fcm.googleapis.com/fcm/send'; 
    $fields = array('registration_ids' => $tokens, 'data' => $message); 
    $headers = array('Authorization: key=' . "My Firebase key", 'Content-Type: application/json'); 
    echo "work well before init curl"; 
    $ch = curl_init(); 
    echo "init well"; 
    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, $fields); 
    echo "init finishe well"; 
    $result = curl_exec($ch); 
    echo "Execute to get result"; 
    if ($result === false) { 
     die('Curl failed: ' . curl_error($ch)); 
    } 
    curl_close($ch); 
    echo "function finished well"; 
    return $result; 
} 

$conn = mysqli_connect("localhost", "root", "mysql_password", "FCM") or die("Error connecting"); 

$sql = " Select Token From users"; 
$result = mysqli_query($conn, $sql); 
$tokens = array(); 
if (mysqli_num_rows($result) > 0) { 
    while ($row = mysqli_fetch_assoc($result)) { 
     $tokens[] = $row["Token"]; 
    } 
} 
mysqli_close($conn); 
$message = array("message" => " FCM PUSH NOTIFICATION TEST MESSAGE"); 
$message_status = send_notification($tokens, $message); 
echo $message_status; 
?> 
+1

こんにちは。 Firebaseコンソールの[クラウドメッセージング]タブに表示されているサーバキーを使用していることが肯定的ですか? –

+0

私のFirebase PannelにあるウェブAPIキーを使用 – AndroidDev

答えて

4

、あなたのリクエストでAuthorizationの値としてごFirebase Consoleクラウドメッセージングタブで見サーバー鍵を使用する必要があります。

+0

はい私はサーバーキーの代わりにWeb IDを使用しましたが、今は登録がないというエラーが表示されます – AndroidDev

+0

[MissingRegistration](https://firebase.google.com/docs/cloud- messaging/http-server-ref#エラーコード)は、ペイロードに 'to'または' registration_ids'を持たないことによって引き起こされます。二重チェックを行い、受信者を指定していることを確認してください。 :) –

+0

はい私はあなたのデータベースにユーザートークンを持っており、上記のコードで$トークンが既に存在することがわかりますので、それをよく読んでください – AndroidDev