web-dev-qa-db-ja.com

GoogleのFirebaseダウンストリームメッセージのhttp投稿リクエストの「承認」の部分は何ですか?

GoogleのFCMメッセージングサービスを使用してメッセージを送信しようとしますが、ドキュメントにあるように、httpリクエストは次のようになります。

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{ "data": {
    "score": "5x1",
    "time": "15:10"
  },
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
}

私の問題は、Authorizationの値がどうあるべきかわからず、このヘッダーを削除してリクエストを行うと、エラー401:Unauthorized。これは何らかのAPIキーか何かでなければならないが、プロジェクトで見つけることができません。誰も私を助けることができますか?

PS:私は現在、テスト目的で このサイト を使用してデバイスにメッセージを送信しています

21
roostaamir

Firebase Cloud Messaging Serverについて ドキュメントによると:

認証

メッセージを送信するために、アプリサーバーはPOSTリクエストを発行します。例:

https://fcm.googleapis.com/fcm/send

メッセージリクエストは、HTTPヘッダーとHTTPボディの2つの部分で構成されます。

HTTPヘッダーには、次のヘッダーが含まれている必要があります。

  • 許可:key = YOUR_SERVER_KEY

    これがserverキーであることを確認してください。このキーの値は、FirebaseプロジェクトコンソールのProject Settings>クラウドメッセージング。クライアントキーまたはその他のキーはFCMによって拒否されます。

  • コンテンツタイプ:application/json for JSON; application/x-www-form-urlencoded;charset=UTF-8プレーンテキスト。

    Content-Typeを省略すると、形式はプレーンテキストであると見なされます。

それが役に立てば幸い!


UPDATE(2016/11/16)

次のスクリーンショット内のメモとして、サーバーキーの代わりにFCMトークンの使用を検討する必要があります。

enter image description here


UPDATE(2016/12/08)

Firebaseはサーバーキーを新しいバージョンにアップグレードしたため、最新バージョンにアップグレードすることをお勧めします。以下のスクリーンショットをご覧ください:

enter image description here

27
BNK

私もこのエラーに直面しました。問題はサーバーキーにあります。 google-services.jsonファイルのapiキーを使用しないでください。

クラウドメッセージングタブのプロジェクトキーで、firebaseコンソールプロジェクトのサーバーAPIキーを使用する必要があります。 https://console.firebase.google.com/project/firebase-probiz/settings/cloudmessaging

1
Leo Much

これは、[プロジェクト設定]> [クラウドメッセージング]でconsole.developers.google.comまたはFirebaseプロジェクトコンソールで確認できるサーバーキーです。 Googleサービスによって自動的に作成されるキーに注意してください。使用を制限するには、IPアドレスinco G.Consoleを追加する必要があります。

さらに、Content-Type:application/jsonについて覚えておいてください。そうしないと、Error = MissingRegistrationが発生します。

0
Sergio Kosik