2016-04-25 21 views
0

Google Clouding Messaging APIを使用してAndroid Appと統合しようとしています。バックエンドの場合、私はLaravel 5.2を使用しています。 Google APIで3つのapiキーを生成しました。これらはサーバAPIキー、Android APIキー、ブラウザAPIキーです。私はこのtutorialを参照しています。リクエストを送信中にエラーが発生しました。

これは、サーバーからのGCMサーバへの私のプッシュ要求である:

private function sendNotification($registatoin_ids,$message) 
{ 
    $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; 
} 

function register(Request $request) 
{ 
    $name   = $request->name; 
    $email   = $request->email; 
    $gcm_regid  = $request->reg_ids; 
    $registatoin_ids = array($gcm_regid); 
    $message   = array("product" => "shirt"); 
    $result   = $this->sendNotification($registatoin_ids,$message); 
    echo $result; 
} 

私はレジスタ機能と呼ばれます。 email,nameおよびreg_idsはモック値である。私はちょうどmyemailmynameとそれぞれランダムな文字列を渡しました。レジスタ機能はコントローラの動作です。 GOOGLE_API_KEYについては、サーバーapiキーを渡しました。しかし、私が要求すると、それは私に次のエラーを与えています。私のプッシュ要求は正しい

{"multicast_id":5065519232839143946,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}

ですか? reg_idsに一意の値を渡すことはできますか?また、私のGOOGLE_API_KEYはAndroid、サーバー、またはブラウザのキーである必要がありますか?

答えて

0

エラーは401 HTTP status codeです。つまり、メッセージの送信に使用された送信者アカウントを認証できませんでした。考えられる原因は次のとおりです。

  • 許可ヘッダーが見つからないか、HTTP要求の構文が無効です。

  • 無効なプロジェクト番号がキーとして送信されました。

  • キーは有効ですが、GCMサービスが無効です。

  • 要求は、サーバーキーIPでホワイトリストに登録されていないサーバーから発生しています。

  • APIキーが無効です。

認証ヘッダー内に送信するトークンが、プロジェクトに関連付けられている正しいAPIキーであることを確認してください。詳細は、Checking the validity of an API Keyを参照してください。

さらに詳しい情報については、この関連性のご質問17969191および11242743もチェックしてみてください。

関連する問題