Messaging(ADM)を使用してアプリインスタンスにメッセージを送信するには、サーバー側で以下の準備が整っている必要があります。アプリインスタンスの登録IDを取得して保存済みであること。詳細については、アプリの統合方法を参照してください。OAuthクライアント認証情報と現在のアクセストークンが交換済みであること。プロセスについてはこのドキュメントで説明します。Messaging(ADM)についてを参照してください。クライアント認証情報とアクセストークンリクエスト形式レスポンス形式トークンリクエストとレスポンス処理クライアント認証情報とアクセストークンアクセストークンを取得するために、開発者サーバーからADMサーバーにOAuthクライアント認証情報が渡されます。クライアント認証情報はAmazonから割り当てられ、アプリ固有の2つのデータ(client_id値とclient_secret値)で構成されています。開発者サーバーは同認証情報の両データをリクエスト内で使用して、ADMアクセストークンを取得します。クライアント認証情報の取得方法については、認証情報の取得方法を参照してください。アクセストークンは、ADMに対して開発者サーバーの識別情報を認証して、メッセージを送信できるようにするための一時的なメタデータです。ADMを使用してメッセージを送信する場合、メッセージリクエストにアクセストークンを含める必要があります。サーバー側では、常に1つのアクセストークンのみが使用されますが、以前に取得したアクセストークンが有効期限切れになった際には新たに取得する必要があります。複数のサーバー間でアクセストークンを共有することもできますが、開発者サーバーごとに異なるアクセストークンを入手して、メッセージ送信時に個別にリクエスト、追跡、使用する方が便利です。開発者サーバーは、ADMサーバーへのリクエスト呼び出しでクライアント認証情報を提供して、アクセストークンを取得します。アクセストークンを取得する際や期限切れのために新たに取得する際も、同様のリクエストを行ってください。アクセストークンの取得時は、開発者サーバー側でHTTPS接続を介してPOSTリクエストを発行します。リクエストは次のようになります。application/x-www-form-urlencoded;charset=UTF-8grant_type=client_credentials&scope=messaging:push&client_id=(クライアントID)&client_secret=(クライアントシークレット)リクエスト自体は、ヘッダーとメッセージ本文で構成されています。ヘッダーには、次のフィールドを含めてください。リソースのコンテンツタイプ。application/x-www-form-urlencodedメッセージ本文のコンテンツには、次のパラメーターを含む、URLエンコードされた文字列を指定します。クライアント認証情報の「クライアント識別子」部分。クライアント認証情報の「クライアントシークレット」部分。client_secret=<クライアントシークレット>レスポンス形式ADMは、POSTリクエストメッセージを正常に受信して解釈した後、開発者サーバーに次のようなHTTPレスポンスメッセージを送信します。"token_type":"Bearer"}レスポンスのヘッダーには、次のフィールドが含まれます。リクエストを一意に識別するためにADMによって作成された値。万が一ADMで問題が発生した場合は、Amazon側でこの値を用いてトラブルシューティングを行います。application/json開発者サーバーがアクセストークンを正常にリクエストした場合、ステータスコード200のレスポンスが返されます。そのメッセージ本文には、アクセストークンとその存続期間(秒単位)の情報が含まれています。すべてのエンキューリクエストに使用するアクセストークンです。アクセストークンの存続時間(秒単位)です。値が「3600」の場合、レスポンスの生成から1時間でアクセストークンが有効期限切れになります。発行されたトークンのタイプです。サポートされているトークンタイプの1つ。現時点では、「Bearer」トークンのみがサポートされています。アクセストークンリクエストで指定された範囲です。値はmessaging:pushになります。"scope":"messaging:push"リクエストに失敗した場合は、ADMから200以外のエラーステータスコードが返されます。その場合、レスポンスメッセージのJSONObjectの本文に次のパラメーターが含まれている可能性があります。リクエストが受理されなかった理由。アクセストークンリクエストに返される可能性のあるエラーステータスコードは、次のとおりです。コンテンツタイプが認証サーバーでサポートされていません(つまり、application/x-www-form-urlencodedではありません)。リクエストに必須パラメーター(client_id、client_secret、scope、grant-type)が含まれていません。リクエストの形式に誤りがあります。セキュリティプロファイルでADMが有効になっていません。認証情報の取得方法を参照してください。リクエストされた操作を行うパーミッションがクライアントにありません。認可タイプが認証サーバーでサポートされていません(つまり、client_credentialsではありません)。リクエストされた範囲が無効です(つまり、messaging:pushではありません)。クライアントの認証に失敗しました。内部サーバーエラーが発生しました。リクエストした側はリクエストを再試行できます。サーバーが一時的に利用できない状態になっています。リクエストした側は、レスポンスに含まれているRetry-Afterヘッダーに従って、後で再試行する必要があります。Retry-After値で有効な形式については、HTTP/1.1仕様のセクション14.37を参照してください。次のコードサンプルは、開発者サーバーソフトウェアでアクセストークンリクエストを送信し、ADMサーバーのレスポンスを処理する方法を例示したものです。client_idおよびclient_secretの値を含めます。clientIDとclientSecretの値を含めて、リクエストの本文をエンコードします。アクセストークンリクエストのベースURLを使用して、新しいURLオブジェクトを作成します。HTTPS接続を生成します。HTTP経由で接続することはできません。Content-Typeヘッダーを設定します。接続点のエンコード済みパラメーターを送信します。レスポンスをStringオブジェクトに変換します。レスポンスからトークンを抽出します。無断複写·転載を禁じます。