外部サーバーを呼び出す

gadgets.io.makeRequest()

Mobageオープンプラットフォームではユーザーのプロフィール情報やソーシャルグラフ情報などをAPIを通じて提供していますが、OpenSocialではそれ以外にもゲーム固有の情報やインターネット上の多くの情報を利用するためのAPIを用意しています。gadgets.io.makeRequest() メソッドはこれを実現するためのAPIです。

現在、制限として通信先ポートは80番か443番に限られます。

また実在証明なしのhttps接続を受けているサーバに対してアクセスした場合、gadgetサーバとgameサーバ間のSSLハンドシェイクに失敗し通信できていない状況となりますので正規の認証局で発行された証明書をご利用ください。 

署名なしのリクエスト

特に署名などをしないで外部サーバーにリクエストする場合には以下のようにします。

  • HTTPメソッドとしてPOSTを指定します。
  • 取得するコンテンツは JSON フォーマットになります。
  • POSTするボディパラメーターを指定します。
  • gadgets.io.makeRequest() を外部サーバーのURLとレスポンスが返ってきたときに呼ばれるコールバック関数を引数にして呼びます。
  • コールバック関数の引数に含まれるレスポンスを処理します。

キャッシュの有効期間の指定

gadgets.io.makeRequest() はの取得結果はデフォルトでは3600秒コンテナ側でキャッシュされます。この時間はgadgets.io.RequestParameters.REFRESH_INTERVAL を指定することにより変更することができます。また、この値を0にすることによってキャッシュをすることを拒否することもできます。なお、キャッシュされるのは AuthorizationType が NONE で HTTPメソッドが GET の場合のみです。また、Sandbox環境ではキャッシュは行われないため REFRESH_INTERVAL は無視されます。

署名付きのリクエスト

外部サーバーが提供するデータによっては、Mobageオープンプラットフォームからのリクエストの妥当性(リクエストの送信元の証明、リクエストが改ざんされていないことの証明)を確認する必要があるかもしれません。そのためにgadgets.io.makeRequest() にはリクエストに署名を付けて送信する仕組みがあります。

以下のように gadgets.io.RequestParameters.AUTHORIZATION に gadgets.io.AuthorizationType.SIGNED を指定することによりリクエストに OAuth の署名がつきます。

Mobageオープンプラットフォームでは AuthorizationType.SIGNED を付けることによって以下のパラメータが付いてリクエストされます。

oauth_body_hash

OAuth Request Body Hash 値

opensocial_owner_id

OWNER ID

opensocial_viewer_id

VIWER ID

opensocial_app_id

アプリケーション ID

opensocial_app_url

Gadget XML の URL

oauth_consumer_key

Consumer key (Sandbox: sb.mbga-platform.jp / Service mbga-platform.jp)

xoauth_public_key

公開鍵の ID (Sandbox: sb.mbga-platform.jp / Service mbga-platform.jp)

oauth_version

OAuth のバージョン

oauth_timestamp

タイムスタンプ

oauth_signature_method

署名方式 RSA-SHA1 固定

oauth_nonce

ランダムな文字列

oauth_signature

OAuth の署名

これらのパラメータを利用して署名の検証を行いリクエストの妥当性をチェックすることができます。

署名の検証

署名は OAuth の使用に基づいて行われます。詳しくは以下をご覧ください。

https://opensocial.atlassian.net/wiki/display/OSREF/Validating+Signed+Requests

また、RSA-SHA1 で署名されたリクエストを検証するには署名した秘密鍵とペアになる公開鍵を利用する必要があります。MobageオープンプラットフォームではSandboxと本番環境と二つの異なる公開鍵を用意しています。

 

有効期限が近付いて参りましたため、公開鍵を新しいものに更新させていただきます。署名付きリクエストの受信サーバにて公開鍵の交換作業が必要となります。

 

Sandbox環境 有効期限: 2027年6月30日(金) 21:48:24(JST)
-----BEGIN CERTIFICATE-----
MIICOTCCAaKgAwIBAgIJAK3cE459+jV9MA0GCSqGSIb3DQEBBQUAMB4xHDAaBgNV
BAMTE3NiLm1iZ2EtcGxhdGZvcm0uanAwHhcNMTcwNjMwMTI0ODI0WhcNMjcwNjMw
MTI0ODI0WjAeMRwwGgYDVQQDExNzYi5tYmdhLXBsYXRmb3JtLmpwMIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQDZ8xJKX1rPli72IF2L+tRV9Tk1c2kRixEEwzxR
T2bz37w/8XJQaMVxtFQMCYqquZUmHDss4JgF/prE4HGnX0j6x9MZUrt0k2VzDINm
Y+F61QJZCLqqy5MBxR9Dyu87DucPf7WsP3C1EMrfB8c29qVT7is+pMuYDowmsPql
eJ4pswIDAQABo38wfTAdBgNVHQ4EFgQUtNIqfC+B1PmcIhDmIA8+QxALZU4wTgYD
VR0jBEcwRYAUtNIqfC+B1PmcIhDmIA8+QxALZU6hIqQgMB4xHDAaBgNVBAMTE3Ni
Lm1iZ2EtcGxhdGZvcm0uanCCCQCt3BOOffo1fTAMBgNVHRMEBTADAQH/MA0GCSqG
SIb3DQEBBQUAA4GBAEhCO8EGF4gp//qWWp79AYwV++X1ZLPrmp72tNr8+Lzop+Dt
VD53X3ek+RCz+6GOBaSjrvgyBMotF87cHHu3G8XGR3b0RQbux2ECJh7MrQVpRJDk
D7Vm2uJi03zMNiUoYdElW8hLUPW6X/XRDW9KrlPHWWk/mabylQp0oi3PtKf3
-----END CERTIFICATE-----

本番環境 有効期限: 2027年6月30日(金) 21:51:51(JST)

-----BEGIN CERTIFICATE-----
MIICMDCCAZmgAwIBAgIJAKgXukluiO9rMA0GCSqGSIb3DQEBBQUAMBsxGTAXBgNV
BAMTEG1iZ2EtcGxhdGZvcm0uanAwHhcNMTcwNjMwMTI1MTUxWhcNMjcwNjMwMTI1
MTUxWjAbMRkwFwYDVQQDExBtYmdhLXBsYXRmb3JtLmpwMIGfMA0GCSqGSIb3DQEB
AQUAA4GNADCBiQKBgQDJiPISeGA1qFk3iCX/71yYN7DiHQhkkcEokr0WiOoHXEMH
bq25kb2oMFrUthS3FldzlCJQl6qfYcI2Q48LFoLjaaORkhNuW5WzqvRQSezyRBNS
3Z8LBmlEkqBnwLMA3BQTtgNctMajEzRGxd/1eLg4bQwpjVwzokxBVjNDZNh3dwID
AQABo3wwejAdBgNVHQ4EFgQUDGmQcD11YTlCXrGvuwbeO2g9tR0wSwYDVR0jBEQw
QoAUDGmQcD11YTlCXrGvuwbeO2g9tR2hH6QdMBsxGTAXBgNVBAMTEG1iZ2EtcGxh
dGZvcm0uanCCCQCoF7pJbojvazAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUA
A4GBAAwHUGNvsODKnKfiAs7MuPaQ4YYBjPv0ROwlfnh21i2OsYtmDupl2TIc9VTt
Ms/SVOrA3pQMaK9uzS2tAOTLwJ7/L5T5sNuMtlmseg4ywP+HupBLbxlUNqo5yfOc
jnP0cPWdpYJMGzNXHJWd34P5+G/xL+eBEdoxvfwNa37IcwlV
-----END CERTIFICATE-----
 

更新履歴
  • 2017/07/20
    • 有効期限が近付いてきたため、新しい公開鍵に更新
  • 2015/07/23
    • 有効期限が近付いてきたため、新しい公開鍵に更新
  • 2014/05/02
    • https通信での証明書について注意事項を追記
  • 2013/07/24
    • 有効期限が近付いてきたため、新しい公開鍵に更新
  • 2011/07/26
    • 有効期限が近付いてきたため、新しい公開鍵に更新

PREVIOUS

ライフサイクルイベント

NEXT

Flash コンテンツを表示する