2011年12月8日木曜日

Titanium Salesforce module(SalesForce Toolkit for Appcelerator)の使い方

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
最近、Titanium Mobileでforce.comのREST APIを使用したiPhoneアプリを作ってます。

Titanium Mobileについての基本的な知識やTitanium Studioの使い方はある程度知ってる前提で書いているので、Titaniumについて知りたい方は「Titanium Mobileで作る! iPhone/Androidアプリ」などを参考にどうぞ。

Titaniumにはmarketplaceがあり、ソフトウェア部品としてのモジュールや、アプリのテンプレートなどをダウンロードできます(有償のもアリ)。
うまいこと目的に合ったモジュールを見つけて利用すれば開発スピードは向上する…はず…

Salesforce用のモジュールも用意されているので、今回の開発にはこれを利用しました。が、ドキュメントが大して無かったりで取っ掛かり苦労したのでメモとして残しておきます。
今回は、モジュールを使うまでの準備と、サンプルコードの実行まで。

まずはモジュールのダウンロードと設定


marketplaceへログイン後、https://marketplace.appcelerator.com/apps/836からSalesforce用モジュールをダウンロードすることができます。

ダウンロードしたzipを解凍すると、

  • com.salesforce-iphone-1.0.zip
  • documentation/
  • example/
  • screenshots/

の4つが入ってるはず。

Titanium Studioで新規プロジェクトを作り、プロジェクトのルートディレクトリへ上記com.salesforce-iphone-1.0.zipをコピーします。

とりあえず1回▶ボタンを押してビルドすると、zipファイルが消え、modulesフォルダが展開されます。

iPhoneシミュレータが起動しますが一旦閉じます。

tiapp.xmlの一番下、<modules/>となっているところを
<modules>
  <module version="1.0">com.salesforce</module>
</modules>
  に書き換えます。これ結構忘れる。Titanium Studioが自動でやってくれるといいのに。

これでモジュールを使う準備は完了です。

consumer key/secretの準備

force.comへの認証はOAuth 2.0を使用するのでconsumer key/secretの取得が必要です。

force.com環境にログインし、設定メニューから 開発 > リモートアクセス を選択します。
コールバックURLは使わないので適当に。必須項目を適当に埋めて下さい。

保存すると、コンシューマ鍵が表示されるのでこれを使用します。
コンシューマの秘密(consumer secret)は今回は使いませんが後で使います。
※コンシューマの秘密、とか翻訳が面白いですねw


サンプルコードの実行

ダウンロードしたzipに入っていた、example/app.jsをResources/app.jsに上書きコピーします。

実はexampleで付いてくるapp.jsこのままだとバグってるので…、コールバックメソッドの先頭に
  e = JSON.parse(e);
を入れてやります。
上記追加済みのapp.jsはgistに上げました
※コールバックメソッドに戻ってくるのはJSON文字列なのにそのままobjectとして使おうとしてる…

app.jsの下の方、FDC.ForceOAuth.openの引数に先ほど発行したコンシューマ鍵を渡します

実行してみます。
※エラーが出る場合は、buildディレクトリに古いのが残ってて差分ビルドがうまくいかない?ことがあるので Project > Clean すると治ると思います。

Salesforceへのログイン画面が出て、ログインして許可ボタンを押すと、こんな画面になります。

Query User〜Describe User辺りのボタンを押すとそれぞれREST APIがコールされて結果がTableViewで表示されます。
レスポンスJSONの内容はコンソールにも出力されるのでこれを参考にしてJSON.parseした結果を自由に扱えますね。

Create Record以下のボタンはカスタムオブジェクトを先に作っておかないとエラーになりますので気になる人はサンプルコードを参考に作ってみると試せるかも。



実はApex RESTで公開したAPIが呼べなかったり、OAuth Tokenの有効期限が切れてしまうとエラーになったりと穴があるのですが…この辺りの対策は次回書く予定です(どうやらAdvent Calendarが2周目も回ってくる様なので…)。

この記事はForce.com Advent Calendar 2011に参加しています。

0 件のコメント:

コメントを投稿