ShowTable of Contents
はじめに
XPages Social Enabler ではさまざまなソーシャルメディアやクラウドサービスをデータソースとして利用し、XPages アプリケーションの中で表示したり、メッセージやコンテンツを投稿するなどの連携を行うことができます。Social Enabler では DropBox と連携するための仕組みを提供しています。この記事では、DropBox に対して XPages Social Enabler を使用するための構成の手順と、DropBox のデータを XPages アプリケーションで表示する簡単なアプリケーションを紹介します。
DropBox を使用するための構成
DropBox でアプリケーションの登録
1. https://dropbox.com/developers/apps を開きます。
2. 「Create an app」ボタンを押して新規のアプリケーションを登録します。「Access」には「Full DropBox」を選択します。
3. 作成後、アプリケーションの内容が表示されるので「App key」と「App secret」の値を記録しておきます。
WebSecurityStore.nsf にキーとシークレットの登録
1. http:///websecuritystore.nsf/KeysApplications.xsp を開く
2. Add Token リンクで以下を設定
Application Id: XPagesSBT
Service Name: Twitter
Consumer Key: <アプリケーション毎に割り振られた文字列>
Consumer Key Type: HMAC-SHA1
Consumer Secret: <アプリケーション毎に割り振られた文字列>
Request Token Uri: https://api.dropbox.com/1/oauth/request_token
Authorization Uri: https://api.dropbox.com/1/oauth/authorize
Access Token Uri: https://api.dropbox.com/1/oauth/access_token
※ この画面での設定方法などは XPages Cheat Sheet のページにある XPages Social Tool リンクの文書に説明があります。
サンプルアプリケーションで確認する
1. 保存後、http:///xpagessbt.nsf を開き、「DropBox」 タブを選択します。
2. Social Enabler によって DropBox との OAuth の認可のプロセスが行われる。Twitter のログイン画面が表示され、その後、アプリケーションから DropBox へのアクセスを許可する画面が表示されます。
アプリケーション (NSF) の設定
アプリケーションプロパティの設定
XPages Social Enabler で DropBox と連携させるアプリケーションの「アプリケーションのプロパティ」を開き、「XPages」タブを選択します。「XPages ライブラリ」セクションで以下の二つのライブラリにチェックを入れます。
-
com.ibm.xsp.extlib.library
-
com.ibm.xsp.extlibx.library
faces-config.xml の設定
XPages Social Enabler で DropBox と連携させるためには、DropBox をデータソースとして使用するための設定を、NSF ファイル内の faces-config.xsl に記載する必要があります。faces-config.xsl ファイルは Domino Designer のアプリケーションナビゲーターで表示されないので、パッケージエクスプローラーなどを開いて表示します。
Social Enablerのサンプル NSF の記載が参考になるが、DropBox を動かすためだけの最低限の設定は以下のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
<!--
Token store physical implementation This store uses an NSF database to store both the access and the consumer tokens.
-->
<managed-bean>
<managed-bean-name>NSFStore</managed-bean-name>
<managed-bean-class>com.ibm.xsp.extlib.sbt.security.oauth_10a.store.OAuthNSFTokenStore
</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
<managed-property>
<property-name>database</property-name>
<value>WebSecurityStore.nsf</value>
</managed-property>
</managed-bean>
<!--
DropBox
-->
<managed-bean>
<managed-bean-name>dropbox</managed-bean-name>
<managed-bean-class>com.ibm.xsp.extlib.sbt.services.client.endpoints.DropboxEndpoint
</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
<!-- Endpoint URL -->
<managed-property>
<property-name>url</property-name>
<value>https://api.dropbox.com</value>
</managed-property>
<managed-property>
<property-name>serviceName</property-name>
<value>Dropbox</value>
</managed-property>
<managed-property>
<property-name>appId</property-name>
<value>XPagesSBT</value>
</managed-property>
<!--
Dropbox REST API version <managed-property> <property-name>apiVersion</property-name> <value>1</value> </managed-property>
-->
<!-- OAuth parameters -->
<managed-property>
<property-name>tokenStore</property-name>
<value>NSFStore</value>
</managed-property>
</managed-bean>
</faces-config>
アプリケーションの作成
DropBox のデータを表示する XPages アプリケーションは以下の手順で作成します。
1. 適当な名前で新規の XPage を作成します。
2. 作成した XPage の beforePageLoad イベントに以下のスクリプトを登録します。
if(!@Endpoint("dropbox").isAuthenticated()) {
@Endpoint("dropbox").authenticate(true);
}
3. XPage のプロパティで「データ」タブを開き、新しいデータソースとして「File Source Data Source」を定義します。「var」プロパティの値は自動的に「fileServiceData1」が設定されるのでそのままにします。
作成したデータソースの「serviceType」プロパティで「xe:dropboxFileData」を選択します。
4. XPage にビューコントロールを配置し、ダイアログではデータソースの定義は行わずに「後でデータソースを選択」をクリックします。
5. 作成したビューコントロールで「ビューの列ヘッダー」に表示させるラベルは適当に指定します。
6. 「ビューの列」に DropBoc のファイルエントリの情報を表示する方法は以下の2つあります。
-
「基本」→「columnName」プロパティに指定した文字列に応じて、ファイルエントリのデータを自動的に表示する。
-
ファイルエントリを示す entry 変数のゲッターメソッドでデータを取得するスクリプトを「データ」→「value」プロパティに指定する。
以下の例は、「基本」→「columnName」プロパティの値にに「title」を指定することで、ファイルエントリのタイトルを表示します。
以下の例では、ファイルエントリの値を取得するスクリプトを「データ」→「value」プロパティの値の計算に指定して、ファイルのタイトルを表示します。
ファイル情報を取得するための指定値とメソッド
ファイルエントリは、XPages Extension Library のソースで com.ibm.xsp.extlib.sbt.files パッケージの FileEntry クラスとして定義されています。
「columnName」プロパティの値として指定する方法と、ゲッターメソッド使用する方法で得られるデータについて以下にまとめます。
「columnName」プロパティの値として指定する方法で実装した XPages アプリケーションのソースを以下に示します。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:this.beforePageLoad><![CDATA[#{javascript:
if(!@Endpoint("dropbox").isAuthenticated()) {
@Endpoint("dropbox").authenticate(true);
}
}]]></xp:this.beforePageLoad>
<xp:this.data>
<xe:fileServiceData var="fileServiceData1">
<xe:this.serviceType>
<xe:dropboxFileData></xe:dropboxFileData>
</xe:this.serviceType>
</xe:fileServiceData>
</xp:this.data>
<xp:viewPanel rows="30" id="viewPanel2" value="#{fileServiceData1}"
var="entry">
<xp:this.facets>
<xp:pager partialRefresh="true" layout="Previous Group Next"
xp:key="headerPager" id="pager1">
</xp:pager>
</xp:this.facets>
<xp:viewColumn columnName="title" id="viewColumn1">
<xp:viewColumnHeader id="viewColumnHeader1" value="Title"></xp:viewColumnHeader>
</xp:viewColumn>
</xp:viewPanel>
</xp:view>
ゲッターメソッドを使用して実装した XPages アプリケーションのソースを以下に示します。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:this.beforePageLoad><![CDATA[#{javascript:
if(!@Endpoint("dropbox").isAuthenticated()) {
@Endpoint("dropbox").authenticate(true);
}
}]]></xp:this.beforePageLoad>
<xp:this.data>
<xe:fileServiceData var="fileServiceData1">
<xe:this.serviceType>
<xe:dropboxFileData></xe:dropboxFileData>
</xe:this.serviceType>
</xe:fileServiceData>
</xp:this.data>
<xp:viewPanel rows="30" id="viewPanel1" value="#{fileServiceData1}"
var="entry">
<xp:this.facets>
<xp:pager partialRefresh="true" layout="Previous Group Next"
xp:key="headerPager" id="pager1">
</xp:pager>
</xp:this.facets>
<xp:viewColumn columnName="view1" id="viewColumn1"
value="#{javascript:entry.getTitle()}">
<xp:viewColumnHeader id="viewColumnHeader1" value="Title"></xp:viewColumnHeader>
</xp:viewColumn>
</xp:viewPanel>
</xp:view>