Titanium Mobile
    でOAuth
     @k0sukey
自己紹介

• @k0sukey(いそべこーすけ)です
• アクトタワーの15階で働いています
• Titanium Mobile製のアプリを数本リリー
 スしました
こんなアプリを作りました
Titanium Mobile?
• ウェブ技術者にはお馴染みのJavaScript
 で、iOS/Androidネイティブのアプリを
 開発することができます

• Appcelerator社が提供する開発環境、
 Titanium StudioというIDEで提供されて
 います
よく引き合いに出される対抗馬たち


• Unity → 3Dゲーム
• PhoneGap → HTML5&JS&CSS3で書ける
• CoronaSDK → 2Dゲームとか
• ngCore → 2Dソーシャルゲーム
• GameSalada → GUIでゲーム開発
なぜTi?
• OSネイティブのUIが使える!
• モジュール(Obj-C、JAVA)で拡張がで
 きる

• 言われるほど重くないよ
• ヌルく開発ができる!と、思っていた
 らObj-Cを書いている自分がいる
他にも...
• JavaScript1.6に対応しています。forEach
 とかmapとか使えます

• Rubyな方、CoffeeScriptで書けますよ
• node.jsな方、CommonJSで書けますよ
 というか、推奨です

• vimとかemacsな方、MakeTiがあります
苦手なこと
• リアルタイム性の高いゲーム
 → それ、QuickTiGame2Dで

• イメージ(グラフ)描画
 → それ、webViewで

• バッドノウハウてんこ盛り!アンド
 キュメントてんこ盛り!
個人的にAndroidは
の道だと思います...
開発のサイクル
1. まずはTiのみでホットモックを作成

2. デザイナさんに配置する画像を依頼

3. 調整&テスト

4. リリース

5. 簡単なものであれば大体一月以内でリ
 リース可能です
本日のお題、
TiでOAuth!
よくある、アプリで
Twitterと連携して∼
とかいうお話です
OAuth

• TiでOAuthというよりも、JavaScriptで
 OAuthするわけです

• と、言っても、OAuthするために便利な
 ライブラリがあるのです
jsOAuth
jsOAuth
• @bytespider さんが開発
 https://github.com/bytespider/jsOAuth
• Tiのことも考えて作られているので、そ
 のまま動きます。もちろんブラウザで
 も動きます

• でも、毎回そのまま書くのもダルい...
TiPlatformConnect
TiPlatformConnect
• 色々なプラットフォームへ簡単に接続
 するために、@ebyrn さんのtwitter-
 titaniumをforkして作りました

• jsOAuth-1.3.3.jsにも多少手を入れて、
 ファイルをアップロードできるように
 なっています
TiPlatformConnect

• 各プラットフォームのAPIを薄くラップ
 しています

• 現在サポートしているプラットフォー
 ムはTwitter、Tumblr、Flickr、Mixi、
 Foursquare(他にも募集中!)
TiPlatformConnect
• https://github.com/k0sukey/
  TiPlatformConnect
• 簡単なサンプルもついていますので、
  Titanium Studioでインポートすればその
  ままアプリが動きます(プラット
  フォームのアプリ登録は忘れずに!)
TwitterでOAuthの例
var twitter = require('twitter').Twitter({
!    consumerKey: 'XXXXXXXXXXXXXXXXXXXX',
!    consumerSecret: 'XXXXXXXXXXXXXXXXXXXX',
!    accessTokenKey: Ti.App.Properties.getString('twitterAccessTokenKey', ''),
!    accessTokenSecret: Ti.App.Properties.getString('twitterAccessTokenSecret', '')
});

twitter.addEventListener('login', function(e){
!    if (e.success) {
!    !    Ti.App.Properties.setString('twitterAccessTokenKey', e.accessTokenKey);
!    !    Ti.App.Properties.setString('twitterAccessTokenSecret', e.accessTokenSecret);

!     !   twitter.request('1/account/verify_credentials.json', {}, {}, 'GET', function(e){
!     !   !    if (e.success) {
!     !   !    !    var json = JSON.parse(e.result.text);

!     !   !    !    twitterLabel.setText(json.screen_name + ' on Twitter');
!     !   !    !    twitterRow.add(twitterSwitch);
!     !   !    !    twitterRow.touchEnabled = false;
!     !   !    !    twitterRow.selectionStyle = Ti.UI.iPhone.TableViewCellSelectionStyle.NONE;

!     !    !    !    if (event) {
!     !    !    !    !    twitterRow.removeEventListener('click', twitterAuthorize);
!     !    !    !    }
!     !    !    } else { // error proc... }
!     !    });
!     } else { // error proc… }
});

twitter.authorize();
デモ

Titanium MobileでOAuth