SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

mixiアプリで始めるOpenSocial入門

OpenSocialアプリケーションと外部サーバとの連携

mixiアプリで始めるOpenSocial入門(8)

  • X ポスト
  • このエントリーをはてなブックマークに追加

makeRequest関数の使用方法

 それでは、外部サーバとの連携を担う、makeRequest関数の使用方法を解説します。まず、makeRequest関数は次のようなシグネチャを持っています。

makeRequest(url, callback, opt_params)

 それぞれの引数は次のような意味を持っています。

makeRequest関数の引数
引数 意味
url アクセス先のURL
callback 結果取得時に呼び出されるコールバック関数
opt_params リクエストのパラメータ

 url引数には、実際にアクセスを行いたいサービスのURLを指定します。HTTP/HTTPS両プロトコルに対応しています。リクエストのパラメータと、コールバック関数での処理について、詳しく見てみましょう。

makeRequest関数のリクエストのパラメータ

 インターネット上で公開されているWebサービスには、シンプルなHTTP GET形式で呼び出すサービスや、HTTP POSTでデータを送信して結果を取得するサービスなど、さまざまな呼び出し方式があります。makeRequest関数の引数として渡すリクエストのパラメータで、さまざまな方式に対応することができます。

 指定可能なパラメータはgadgets.io.RequestParametersクラスに定義されており、次のように、複数のパラメータをハッシュで指定することができます。

リクエストのパラメータの設定例
var params = {}; //パラメータ格納用のハッシュ

//HTTPメソッドを指定するパラメータ
params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;

//結果を取得する形式を指定するパラメータ
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.FEED;

//複数のパラメータを指定しての呼び出し
gadgets.io.makeRequest(url, callback,params);

 ここでは、RequestParametersクラスで定義されたパラメータの主なものを説明します。

HTTPメソッドの指定

 gadgets.io.RequestParameters.METHODパラメータは、外部サーバへリクエストする際のHTTPメソッドを指定するためのパラメータです。指定する値はgadgets.io.MethodTypeクラスで定義されており、GET,POST,PUT,DELETEなどの種類を指定できます。

POSTするデータの指定

 gadgets.io.RequestParameters.METHODパラメータでPOSTを指定した場合、外部サーバへPOSTするデータをgadgets.io.RequestParameters.POST_DATAパラメータに設定します。

 データはgadgets.io.encodeValues関数でエンコードして指定します。

 以下に例を示します。

POSTデータの設定例
//HTTPメソッドを指定
params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;

//POSTするデータ
var postData = {param1: "some-value"};

//POSTデータをエンコードしてパラメータに指定する
params[gadgets.io.RequestParameters.POST_DATA] =  gadgets.io.encodeValues(postData);
取得形式の指定

 gadgets.io.RequestParameters.ContentTypeパラメータは、取得結果の形式を指定するためのパラメータです。gadgets.io.ContentTypeクラスに次のような値が定義されています。

ContentTypeパラメータに指定可能な値
引数 意味
DOM 結果をXMLとして解析し、DOMオブジェクトとして返す
FEED 結果をRSSかATOM形式によるフィードと見なして解析し、JSON形式で返す
JSON 結果をJSON形式で返す
TEXT 結果をそのまま文字列として返す

 あらかじめ外部サーバから取得する形式が分かっている場合には、それに沿った形式を選択することで、OpenSocialコンテナ側で解析処理を行ってくれますので、コールバック関数での処理が簡略化されます。特に、RSSやATOMを解析したうえでJSON形式で返すFEEDは、定型処理を省くことができるので有用でしょう。

 デフォルトでは、結果をそのまま文字列として返すTEXTが指定されます。

認証許可要求・署名付きアクセスの指定

 gadgets.io.RequestParameters.AUTHORIZATIONパラメータは、外部サーバへのアクセスの際に認証許可要求や署名付きアクセスを行うかどうかを指定するためのパラメータです。

 gadgets.io.AuthorizationTypeクラスに次のような値が定義されています。

AUTHORIZATIONパラメータに指定可能な値
引数 意味
NONE 認証を行わない
OAUTH OAuthによる認証許可認可要求を行う(mixiアプリは現状非対応)
SIGNED OpenSocialコンテナの署名付きリクエストを行う

 OAuthとは、認証の必要なWebサービスを、他のサイトから呼び出せるようにするための仕組みです。例えば、画像共有サイトやオンラインストレージサイトに保存している自分のデータに、オンライン写真印刷サービスやオンラインオフィスサービスが直接アクセスすることを許可する、といったケースで使用します。この際、ユーザーの認証情報をオンライン写真印刷サービスやオンラインオフィスサービスのサーバに入力する必要はありませんので、外部のサービスから認証情報が漏れてしまう心配がありません。

 現状mixiアプリはOAuthに対応していません。例えばTwitterはOAuthに対応していますが、Twitterに投稿するmixiアプリを作成する場合には、今のところOAuthを使うことができないため、アカウント情報をmixiアプリに入力する必要があります。

 署名付きリクエストとは、呼び出し先のWebサービスに対し、呼び出し元のサーバのRSA証明書による署名を付けてリクエストを行うことです。呼び出し先のWebサービスでは、署名を使うことで、以下の事柄を検証することができます。

  • 呼び出し元が確かに意図したOpenSocialコンテナであること
  • 呼び出しの際のリクエストが改ざんされていないこと

 署名付きアクセスに対応するためには、外部のWebサービスでの対応が必要となります。

 ミクシィ ディベロッパーセンターでは、PHP,Java,C#で署名付きリクエストを行う方法が紹介されていますので、参考にしてください。mixiアプリからの署名付きリクエストを検証する際に使用する公開鍵も公開されています。

 デフォルトでは、認証要求・署名付きリクエストを行わないNONEが指定されます。

コールバック関数でのレスポンス処理

 OpenSocialコンテナでWebサービスへのリクエストが行われ、取得処理が完了すると、makeRequest関数で指定したコールバック関数に結果が渡されます。実際のデータはコールバック関数に渡されたオブジェクトのdataプロパティから取得できます。

 レスポンスの処理は、makeRequest関数で指定した形式に従って行う必要があります。例えば、内容をRSSやATOMとして解析し、JSON形式で結果を返すFEEDを指定した場合、次のように処理します。

FEED形式で取得した場合の結果の処理例
function callback(response) {
  var feed = response.data; //dataプロパティから、取得結果を取得
  var title = feed.Title; //タイトルを取得
  var link = feed.Link; //リンクを取得
  var entries = feed.Entry; //エントリ一覧を取得
  for (var i = 0; i < entries.length; i++) {
    var entry = entries[i]; //エントリを取得
    var entryTitle = entry.Title; //エントリのタイトルを取得
    ……
  }
}

 取得した内容をOpenSocialアプリケーションの画面上に表示する際は、これまでの連載で解説してきたように、DOM操作などで行います。

次のページ
外部サービスの呼び出しサンプル

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
mixiアプリで始めるOpenSocial入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 土井 毅(ドイ ツヨシ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4687 2010/01/22 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング