0
Ruby on RailsでTwitter連携アプリをサクっと作る       Fumitaka Yanase : giftee.co                @i7a16k
Agenda1. ruby / rails に関して2.Twitter連携アプリ作成の実例  2.1.下準備  2.2.Sign in with Twitter  2.3.Tweet  2.4.Deploy
1.Ruby on Rails に関して
about:rails(1)「同じ事を繰り返さない」「設定よりも規約」を理念としたフレームワーク railsのフォルダ構造(抜粋)   (アプリ名)     |-app/        |-assets        |-controllers...
about:rails(2)railsはルータとMVCにより制御される                                        http://my.url/hoge/piyo                        ...
2.Twitter連携アプリ作成の実例
キティったーこんなのこれから作ってみますhttp://bit.ly/twtr_hack_rails
2.1 下準備
アプリ登録Twitterにアプリの登録を行う   dev.twitter.com                         なんかいれとく
アプリ登録Write権限も取れるように   dev.twitter.com                       Read and Write に変更   dev.twitter.com                          ...
rails インストールruby / rubygemsのインストール(説明省略)rubygemsを使ってrailsをインストールgem install rails
rails準備 rails new コマンドにより、アプリケーションの枠組みが作成される    rails new <アプリ名>生成されるファイル群-rw-r--r--    1   i7a16k   staff    765   7   29...
2.2 Sign in with Twitter
TOPページ表示(1)controllerを追加し、TOPページを作成する    rails g controller home index生成されるファイル群     create   app/controllers/home_control...
TOPページ表示(2)root設定をroutes.rbに追加    routes.rb   root :to => ‘home#index’public/index.htmlを削除   rm public/index.html  ※ちなみにさっ...
Twitter ログインgem設定をGemfileに追加     Gemfile  gem ‘omniauth-twitter’  bundle installomniauth用の設定ファイルを追加 config/initializers/omnia...
Twitter ログインTwitterログイン用のリンク追加  /app/views/home/index.html.erb  <%= link_to ‘Sign in with Twitter’, ‘/auth/twitter’ %>
callbackの制御ログイン用のコントローラーを作成   rails g controller sessionsroutes.rbに設定を追加      routes.rb   match ‘/auth/twitter/callback’ =...
取得された情報oauth後取得されている情報  provider: twitter  uid: 118282075  info:    nickname: i7a16k    name: i7a    location: Spikers Cam...
モデルを作ろうuserモデルを作成  rails g model user provider:string uid:string  name:string token:string secret:string  rake db:migrate ...
ログインロジックsessions#createにロジック追加 sessions_controller.rb    def create      auth = request.env[“omniauth.auth”]      user = U...
ログイン後application_controller.rb に current_user メソッド追加  application_controller.rb helper_method :current_user private def cu...
ログアウト実装index.html.erb に ログアウトのリンク追加     index.html.erb<% if current_user %>  こんにちは <%=current_user.name%> さん  <%= link_to ...
2.3 Tweet ・・・ はまた次回?
Rails and twitter #twtr_hack
Rails and twitter #twtr_hack
Rails and twitter #twtr_hack
Rails and twitter #twtr_hack
Rails and twitter #twtr_hack
Rails and twitter #twtr_hack
Rails and twitter #twtr_hack
Rails and twitter #twtr_hack
Rails and twitter #twtr_hack
Rails and twitter #twtr_hack
Upcoming SlideShare
Loading in...5
×

Rails and twitter #twtr_hack

2,332

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,332
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
3
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript of "Rails and twitter #twtr_hack"

    1. 1. Ruby on RailsでTwitter連携アプリをサクっと作る Fumitaka Yanase : giftee.co @i7a16k
    2. 2. Agenda1. ruby / rails に関して2.Twitter連携アプリ作成の実例 2.1.下準備 2.2.Sign in with Twitter 2.3.Tweet 2.4.Deploy
    3. 3. 1.Ruby on Rails に関して
    4. 4. about:rails(1)「同じ事を繰り返さない」「設定よりも規約」を理念としたフレームワーク railsのフォルダ構造(抜粋) (アプリ名) |-app/ |-assets |-controllers |-helpers |-mailers |-models |-views |-config/ |-db/ |-doc |-lib |-log |-public |-script |-test |-tmp |-vendor
    5. 5. about:rails(2)railsはルータとMVCにより制御される http://my.url/hoge/piyo ↓ routes.rb fooコントローラのbarメソッド ① ② controller ④ ③ ⑤ View model
    6. 6. 2.Twitter連携アプリ作成の実例
    7. 7. キティったーこんなのこれから作ってみますhttp://bit.ly/twtr_hack_rails
    8. 8. 2.1 下準備
    9. 9. アプリ登録Twitterにアプリの登録を行う dev.twitter.com なんかいれとく
    10. 10. アプリ登録Write権限も取れるように dev.twitter.com Read and Write に変更 dev.twitter.com Consumer key / Cosumer secretを 控えておく
    11. 11. rails インストールruby / rubygemsのインストール(説明省略)rubygemsを使ってrailsをインストールgem install rails
    12. 12. rails準備 rails new コマンドにより、アプリケーションの枠組みが作成される rails new <アプリ名>生成されるファイル群-rw-r--r-- 1 i7a16k staff 765 7 29 14:02 Gemfile-rw-r--r-- 1 i7a16k staff 2463 7 29 14:02 Gemfile.lock-rw-r--r-- 1 i7a16k staff 9208 7 29 14:02 README.rdoc-rw-r--r-- 1 i7a16k staff 274 7 29 14:02 Rakefiledrwxr-xr-x 8 i7a16k staff 272 7 29 14:02 app/drwxr-xr-x 10 i7a16k staff 340 7 29 14:02 config/-rw-r--r-- 1 i7a16k staff 159 7 29 14:02 config.rudrwxr-xr-x 3 i7a16k staff 102 7 29 14:02 db/drwxr-xr-x 3 i7a16k staff 102 7 29 14:02 doc/drwxr-xr-x 4 i7a16k staff 136 7 29 14:02 lib/drwxr-xr-x 3 i7a16k staff 102 7 29 14:02 log/drwxr-xr-x 8 i7a16k staff 272 7 29 14:02 public/drwxr-xr-x 3 i7a16k staff 102 7 29 14:02 script/drwxr-xr-x 8 i7a16k staff 272 7 29 14:02 test/drwxr-xr-x 3 i7a16k staff 102 7 29 14:02 tmp/drwxr-xr-x 4 i7a16k staff 136 7 29 14:02 vendor/
    13. 13. 2.2 Sign in with Twitter
    14. 14. TOPページ表示(1)controllerを追加し、TOPページを作成する rails g controller home index生成されるファイル群 create app/controllers/home_controller.rb route get "home/index" invoke erb create app/views/home create app/views/home/index.html.erb invoke test_unit create test/functional/home_controller_test.rb invoke helper create app/helpers/home_helper.rb invoke test_unit create test/unit/helpers/home_helper_test.rb invoke assets invoke coffee create app/assets/javascripts/home.js.coffee invoke scss create app/assets/stylesheets/home.css.scss
    15. 15. TOPページ表示(2)root設定をroutes.rbに追加 routes.rb root :to => ‘home#index’public/index.htmlを削除 rm public/index.html ※ちなみにさっきでてたのはこのpublic.html
    16. 16. Twitter ログインgem設定をGemfileに追加 Gemfile gem ‘omniauth-twitter’ bundle installomniauth用の設定ファイルを追加 config/initializers/omniauth.rb TWITTER_CONSUMER_KEY = ‘xxxxx’ TWITTER_CONSUMER_SECRET = ‘yyyy’ Rails.application.config.middleware.use OmniAuth::Builder do provider :twitter, TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET end ※dev.twitter.comで取得したconsumer keyとconsumer secretを使う
    17. 17. Twitter ログインTwitterログイン用のリンク追加 /app/views/home/index.html.erb <%= link_to ‘Sign in with Twitter’, ‘/auth/twitter’ %>
    18. 18. callbackの制御ログイン用のコントローラーを作成 rails g controller sessionsroutes.rbに設定を追加 routes.rb match ‘/auth/twitter/callback’ => ‘sessions#create’sessions_controller.rb に、createメソッド追加 sessions_controller.rb def create raise request.env[“omniauth.auth”].to_yaml end ユーザ情 報がこの中に入っているので 確認してみる
    19. 19. 取得された情報oauth後取得されている情報 provider: twitter uid: 118282075 info: nickname: i7a16k name: i7a location: Spikers Camp image: http://a0.twimg.com/profile_images/1602452666/ i7aicon_normal.jpg description: i7aで「いな」と読ませたいらしいです。16kはspikeoutというゲーム より。エンジニアとして http://giftee.co/ の中の人をやってます。ちなみにIME and DiMENSiONの中の人。男なんですけど、キ ティが好きです。 (キティの中の人含め) urls: Website: http://and-d.i7a16k.net/ Twitter: http://twitter.com/i7a16k credentials: token: 118282075-xxxxxxxxxxxxxxxxxxxxxxxxx secret: yyyyyyyyyyyyyyyyyyyyyyyy
    20. 20. モデルを作ろうuserモデルを作成 rails g model user provider:string uid:string name:string token:string secret:string rake db:migrate カラム名 型 意味 id integer 自動生成 provider string 連携サービス名 uid string 連携サービスのユーザid name string 連携サービスでの名前 token string アクセストークン secret string シークレットトークン
    21. 21. ログインロジックsessions#createにロジック追加 sessions_controller.rb def create auth = request.env[“omniauth.auth”] user = User.find_by_provider_and_uid(auth[“provider”],auth[“uid”]) || User.create_with_omniauth(auth) session[:user_id] = user.id redirect_to root_url enduser.rb にユーザ作成処理追加 user.rb self.create_with_omniauth(auth) create! do |user| user.provider = auth[“provider”] user.uid = auth[“uid”] user.name = auth[“info”][“name”] user.token = auth[“credentials”][“token”] user.secret = auth[“credentials”][“secret”] end end
    22. 22. ログイン後application_controller.rb に current_user メソッド追加 application_controller.rb helper_method :current_user private def current_user @current_user ||= User.where(:id => session[:user_id]) if session[:user_id] endindex.html.erbにログイン状態に応じた制御を追加 index.html.erb <% if current_user %> こんにちは <%=current_user.name%> さん <% else %> <%= link_to ‘Sign in with Twitter’, ‘/auth/twitter’ %> <% end %>
    23. 23. ログアウト実装index.html.erb に ログアウトのリンク追加 index.html.erb<% if current_user %> こんにちは <%=current_user.name%> さん <%= link_to ‘Sign Out’, signout_path %><% else %> <%= link_to ‘Sign in with Twitter’, ‘/auth/twitter’ %><% end %>routes.rb にログアウトの設定追加 index.html.erb match ‘/signout’ => ‘sessions#destroy’, :as => :signoutsessions_controller にdestroyメソッド追加 sessions_controller.rb def destroy session[:user_id] = nil redirect_to root_url end
    24. 24. 2.3 Tweet ・・・ はまた次回?
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×