SaaS: Facebook
NetBeans IDE では、SaaS (Software as a Service) アプリケーションをサポートする Web サービスマネージャーが提供されています。SaaS はソフトウェアアプリケーション配布モデルの 1 つであり、このモデルは、ソフトウェアベンダーが Web 固有のソフトウェアアプリケーションを開発し、そのアプリケーションを顧客がインターネット上で使用できるようにホストして運用する環境を実現します。SaaS モデルは、コストと顧客のハードウェアリソースの両面から、ソフトウェアの機能を経済的に提供できるモデルとして普及しつつあります。IDE では、Web でよく知られているすべての SaaS サービスに Java 開発者が簡単にアクセスできるようになりました。
Facebook プラットフォームは、Facebook データへのアクセスおよび提供メソッドを持つ、標準ベースの Web サービスです。Facebook プラットフォームは、Facebook 開発者の Wiki でドキュメント化されています。
Facebook はユーザーログイン機構を使用して、Web サービスの通信をセキュリティー保護します。アプリケーション開発者は、API キーおよび秘密鍵を取得するためにアプリケーションを Facebook に登録する必要があります。Facebook に対するすべてのメソッド呼び出しは、秘密鍵を使用して署名されている必要があります。ログイン処理の際、最初にアプリケーションから Facebook が呼び出され、その API キーを使用するトークンが要求されます。次に、そのユーザーは API キーとトークンから構成されるログイン URL にリダイレクトされます。この URL は、ユーザーを Facebook 上のログインページに移動します。ユーザーが Facebook にログインし、自分に代わってアプリケーションが Facebook を呼び出すことを許可したあと、アプリケーションからセッションキーとセッション秘密鍵が返送されます。これ以降、すべての API 呼び出しでこのセッションキーが渡され、セッション秘密鍵を使用して署名されるようになります。
このチュートリアルでは、JSP ファイルに挿入された簡単な friends_get 操作を使用して、あるユーザーの Facebook の友達全員の数値 ID リストを返します。このチュートリアルは、複雑な Facebook ユーザーログイン認証の設定方法を紹介することを中心としています。この方法は、Flickr サービスなどのほかのユーザーログインサービスに応用することもできます。
目次
このチュートリアルに従うには、次のソフトウェアとリソースが必要です。
プロジェクトの作成
IDE を使用すると、SaaS 操作をサーブレット、既存の RESTful サービス、JSP ページ、またはプレーン Java オブジェクト (POJO) に挿入できます。このチュートリアルでは、Web アプリケーションプロジェクトを作成し、サービスをプロジェクトのデフォルトの JSP ページに追加します。
プロジェクトを作成するには、次の手順に従います。
「ファイル」>「新規プロジェクト」を選択します。「カテゴリ」から「Java Web」を選択します。「プロジェクト」で「Web アプリケーション」を選択して、「次へ」をクリックします。
「プロジェクト名」フィールドに「FacebookSaas 」と入力します。
GlassFish または Tomcat サーバー、および Java EE 5 を選択します。残りのオプションもクリックして進み、「完了」をクリックします。プロジェクトの index.jsp ページが IDE で開きます。
「FacebookSaas」プロジェクトノードを右クリックし、コンテキストウィンドウから「プロパティー」を選択します。「プロジェクトプロパティー」ダイアログが開きます。
「実行」カテゴリを開き、「保存時に配備」を選択解除します。「了解」をクリックします。
「サービス」ウィンドウで、「Web サービス」ノードを展開します。「Facebook」ノードを展開し、friends_get 操作が表示されるまでサブノードを展開します。
Facebook Web サービスが展開されている「サービス」ウィンドウ
friends_get 操作を左クリックします。左マウスボタンを押したままで、操作を index.jsp の本体にドラッグします。「GET SaaS をカスタマイズ」ダイアログが表示され、ここで初期パラメータ値を設定できます。デフォルト値のままにし、「了解」をクリックします。IDE が friends_get 操作を index.jsp の本体に挿入し、次のようになります。
<body>
<h1>JSP Page</h1>
<%@ page import="org.netbeans.saas.*, org.netbeans.saas.facebook.*" %>
<%
try {
String format = null;
String flid = null;
RestResponse result = FacebookSocialNetworkingService.friendsGet(request, response, format, flid);
facebook.socialnetworkingservice.facebookresponse.FriendsGetResponse resultObj = result.getDataAsObject(facebook.socialnetworkingservice.facebookresponse.FriendsGetResponse.class);
//TODO - Uncomment the print Statement below to print result. //out.println("The SaasService returned: "+result.getDataAsString());
} catch (Exception ex) {
ex.printStackTrace();
}
%>
</body>
コンパイラが FriendsGetResponse クラスを認識しない場合、最新のパッチを NetBeans IDE にインストールする必要があります。このパッチには、JAXB FriendsGetResponse のサポートが含まれています。
FriendsGetResponse JAXB オブジェクトは、ベースとなる XML ドキュメントにアクセスするために使用できます。空の行を facebook.socialnetworkingservice... 行のあとに追加し、「resultObj. 」と入力します。resultObj を拡張し、ベースとなる XML にアクセスするために使用できるすべてのメソッドがポップアップウィンドウに表示されます。
また、IDE は org.netbeans.saas および org.netbeans.saas.facebook パッケージ内のクラスとセキュリティーキープロパティーファイルも追加します。完了したプロジェクト構造が「プロジェクト」ウィンドウに表示されます。
最後に、IDE で次のセクションが web.xml に挿入されます。このファイルは、Web Pages/WEB-INF フォルダ内にあります。
<servlet>
<servlet-name>FacebookSocialNetworkingServiceLogin</servlet-name>
<servlet-class>org.netbeans.saas.facebook.FacebookSocialNetworkingServiceLogin</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>FacebookSocialNetworkingServiceCallback</servlet-name>
<servlet-class>org.netbeans.saas.facebook.FacebookSocialNetworkingServiceCallback</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FacebookSocialNetworkingServiceLogin</servlet-name>
<url-pattern>/FacebookSocialNetworkingServiceLogin</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FacebookSocialNetworkingServiceCallback</servlet-name>
<url-pattern>/FacebookSocialNetworkingServiceCallback</url-pattern>
</servlet-mapping>
プロジェクトの登録
API キーと秘密鍵を取得するため、アプリケーションを Facebook に登録します。Facebook アカウントが必要です。これらのキーを取得したら、ブラウザの外にコピーして org.netbeans.saas.facebook.facebooksocialnetworkingserviceauthenticator.properties にペーストします。
プロジェクトを登録するには、次の手順に従います。
ブラウザウィンドウを開き、Facebook にログインします。
http://www.facebook.com/developers/ に移動します。「Developer」ページが開きます。
「+ Set Up New Application 」をクリックします。「New Application」ページが開きます。
「Application Name」フィールドに「FacebookSaas 」と入力します。アプリケーション名は、常に Web アプリケーションプロジェクトと同じ名前にしてください。
「Optional」フィールドを展開します。
開発者とユーザーサポート電子メールアドレスを入力します。
「Callback URL」の下に、「http://localhost:8080/FacebookSaas/FacebookSocialNetworkingServiceCallback」と入力します。この URL は、GlassFish が実行されているポート番号、プロジェクト名、および結果を渡すクラスの名前から派生されます。8080 以外のポート上のサーバーを使用している場合、代わりにそのポート番号を入力してください。このクラスの名前は、index.jsp ファイルの RestResponse result = FacebookSocialNetworkingService.friendsGet(request, response, format, flid); 行にあります。すべてのユーザーログイン認証サービスのための URL は、この方法で構成されます。
その他のすべてのフィールドをデフォルト値のままにします。「Submit 」をクリックします。ブラウザの画面が更新され、FacebookSaas アプリケーションホームページが表示されます。新しく生成された API と秘密鍵が表示されます。
IDE で「プロジェクト」ウィンドウに移動し、org.netbeans.saas.facebook の facebooksocialnetworkingserviceauthenticator.properties を開きます。API キーと秘密鍵をブラウザからこのファイルにコピーします。ファイルを保存します。
プロジェクトの実行
API キーと秘密鍵を Facebook から取得したら、プロジェクトを実行できます。
プロジェクトを実行する
index.jsp を開き、出力文 out.println("The SaasService returned: "+result.getDataAsString()); をコメント解除します。また、これ以外にも、タイトルと h1 ヘッダーを "JSP Page" から "Facebook 友達取得サービス" に変更したり、try ブロックのテキストを "The SaasService returned:" から "友達リストの ID:"に変更したりして、試してみたい表面上の変更があれば、行うことができます。
「プロジェクト」ウィンドウのプロジェクトノードを右クリックします。コンテキストメニューから「実行」を選択します。IDE でプロジェクトが構築され、アプリケーションサーバーに配備されます。
Facebook へのログインを求めるブラウザウィンドウが開きます。「Log Into Facebook」をクリックすると、FacebookSaas プロジェクトへのログインページが表示されます。Facebook の資格情報を使用してログインします。
Web ページがイントラネットへのアクセスを試みていることを示す警告が表示される場合があります。Web ページにイントラネットへのアクセスを許可します。
友達リストの数値 ID リストがブラウザに返されます。
その他の課題
有益なアイデアをいくつか紹介します。
番号リストよりも視覚的にアピールする方法でデータを表示するように、index.jsp をデザインし直します。
追加の Facebook 操作をプロジェクトに追加します。例を挙げると、ユーザーの友達に関する情報を表に表示するように index.jsp をデザインします。
Web アプリケーションの代わりに、Facebook 操作に Java デスクトップアプリケーションからアクセスするようにします。テスト目的で、Facebook 操作を main クラスの main メソッドにドロップできます。GUI を作成し、この操作をクラスにドロップすることもできます。アプリケーションを Facebook に登録するときは、それがデスクトップアプリケーションであり、コールバックを指定する必要がないことを指定する必要があります。また、アプリケーションの実行時、ダイアログに URL が表示されます。ユーザーは、Facebook にログインするためにその URL をコピーしてブラウザにペーストする必要があります。
関連項目
NetBeans IDE を使用して RESTful Web サービス、SaaS、およびその他の Java EE アプリケーションを開発する方法の詳細については、次のリソースを参照してください。
nbj2ee
@
netbeans.org
メーリングリスト に登録することによって、NetBeans IDE Java EE 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。