Ruby on Rails で Facebook の OAuth を使う
Ruby on RailsでfacebookのOAuth認証を実装する を参考にした。
facebook_oauth プラグインを使ってラクしたものだ。
gem のインストール
$ sugo gem install oauth
$ sugo gem install oauth2
$ sudo gem install facebook_oauth
バージョンを指定せずに最新をインストールして大丈夫だった。
oauth v0.4.6
oauth2 0.8.0
facebook_oauth 0.3.0
ソースコードの編集
$ rails generate controller Users index callback
– controller/users_controller.rb
class UsersController < ApplicationController CALLBACK_URL = "Facebook Developers の Website with Facebook Login の Site URL" CONSUMER_KEY = "Facebook Developers の App ID" CONSUMER_SECRET = "Facebook Developers の App Secret" def index end def oauth client = FacebookOAuth::Client.new( :application_id => CONSUMER_KEY, :application_secret => CONSUMER_SECRET, :callback => CALLBACK_URL ) redirect_to client.authorize_url end def callback @client = FacebookOAuth::Client.new( :application_id => CONSUMER_KEY, :application_secret => CONSUMER_SECRET, :callback => CALLBACK_URL ) @client.authorize(:code => params[:code]) end end
– views/users/index.html.erb
<%= link_to 'OAuth認証', '/users/oauth' %>
– views/users/callback.html.erb
<%= @client.me.info %>
以上は書いてあったとおり。
追加で以下の作業が必要。
– config/routes.rb
get "users/oauth"
Routing Error : No route matches [GET] “/users/oauth” が出たので追加してみた。
– Gemfile
gem 'facebook_oauth'
NameError : uninitialized constant UsersController::FacebookOAuth が出たので追加してみた。
ただ、facebook_oauth が Heroku にないのか、Heroku の git にあげようとするとエラーになるという問題が・・・
Rails メモ
Railsサーバー起動
歯車アイコンから Run Server を選択、もしくは、
$ rails server
Heroku にデプロイ
歯車アイコンの Commit を選択、もしくは、
$ git commit -m “メッセージ”
歯車アイコンの Push を選択、もしくは、
$ git push heroku master
Controller 作成
$ rails generate controller コントローラ名 アクション名1 アクション名2
Model 作成
DBの設定は config/database.yml に書く
$ rails generate model モデル名 項目名:型 項目名:型
Ubuntu の Eclipse で Aptana が動かない
きっかけが何だったのかわからないが、
2週間ぶりにUbuntuにログインし、ソフトウェアアップデートをした後、
Eclipse の Aptana が認識されなくなっていた。
以前作ったプロジェクトの Properties の Builders を見ても、
Missing Builder と表示されていた。
Plugin のアンインストール→インストールをしても変わらず、
eclipse のアンインストール→インストールをしても変わらず。
eclipse のアンインストールをすると /usr/lib/eclipse が消えるのは確認していたが、
自分のHOMEにある .eclipse がそのまま残ってることに気づき、消してからインストール。
その後に Aptana をインストールしたら、動きが変わった!!
でもエラー。
Eclipse を起動したら、libjpeg.so.62 がないというエラー。
> sudo apt-get install libjpeg62
でインストールしてから起動したら、以前の状態に戻ってくれた。
なんで壊れたんだろう・・・
Ruby on Rails と Heroku
環境: Ubuntu 12.04
Ruby, Git, PostgreSQL, Eclipse は『Ubuntuソフトウェアセンター』でインストールしたのと、元々入ってたのと。
Ruby on Rails のインストール
Rails, Heroku, Rakeをインストールする。
ー Rails は Ruby on Rails
ー Heroku はそれを heroku 上で動かすためのもの
ー Rake は何だっけな
ー Ruby Debug IDE はデバッガらしい
$ sudo gem install rails
$ sudo gem install heroku
$ sudo gem install rake
$ sudo gem install ruby-debug-ide
開発ツール
Rails と Heroku の開発ができる Aptana Studio を使用する。
Eclipse のプラグインをダウンロードページで選ぶと、インストールの仕方が表示される。
Install New Software… から http://download.aptana.com/studio3/plugin/install を指定するのだ。
Heroku
http://www.heroku.com/ で SignUp からアカウントを作る。
プロジェクトの作成
Eclipse の File → New → Rails Project でプロジェクトを作成。
プロジェクトをローカルで起動
App Explor の歯車から Run Server を選択する。
エラーが出たので、追加でいろいろ対応する。
> /var/lib/gems/1.9.1/gems/bundler-1.1.4/lib/bundler/resolver.rb:287:in `resolve’: Could not find gem ‘jquery-rails (>= 0) ruby’ in the gems available on this machine. (Bundler::GemNotFound)
$ sudo gem install jquery-rails
> /var/lib/gems/1.9.1/gems/bundler-1.1.4/lib/bundler/resolver.rb:287:in `resolve’: Could not find gem ‘coffee-rails (~> 3.2.1) ruby’ in the gems available on this machine. (Bundler::GemNotFound)
$ sudo gem install coffee-rails
> /var/lib/gems/1.9.1/gems/bundler-1.1.4/lib/bundler/resolver.rb:287:in `resolve’: Could not find gem ‘sqlite3 (>= 0) ruby’ in the gems available on this machine. (Bundler::GemNotFound)
$ sudo apt-get -y install libsqlite3-dev
$ sudo gem install sqlite3
> /var/lib/gems/1.9.1/gems/bundler-1.1.4/lib/bundler/resolver.rb:287:in `resolve’: Could not find gem ‘sass-rails (~> 3.2.3) ruby’ in the gems available on this machine. (Bundler::GemNotFound)
$ sudo gem install sass-rails
> /var/lib/gems/1.9.1/gems/bundler-1.1.4/lib/bundler/resolver.rb:287:in `resolve’: Could not find gem ‘uglifier (>= 1.0.3) ruby’ in the gems available on this machine. (Bundler::GemNotFound)
$ sudo gem install uglifier
> /var/lib/gems/1.9.1/gems/execjs-1.4.0/lib/execjs/runtimes.rb:51:in `autodetect’: Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
g++をインストールしてから、
$ sudo gem install therubyracer
$ sudo gem install execjs
プロジェクトのルートにある Gemfile に以下を追加
gem ‘execjs’
gem ‘therubyracer’
これでOKになった!!
=> Booting WEBrick
=> Rails 3.2.6 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Herokuでデプロイする
Eclipse 上で Run Web deployment Wizard… を選択する。
Heroku を選んで Next し、Heroku 環境のEメール、パスワードを入力する。
アプリ名がこれでいいかって聞かれるので、OKならウィンドウは閉じる。
Console 上でまたログイン情報を聞かれるので、入れる。
public keyがないけど作る?みたいなことを聞かれるので、Y。
終わったと思ったらエラー。
アプリ名は大文字で始まっちゃいけないらしい。
いろいろ表示されて進んでるなーと思ったら、また sqlite3 でエラー。
メッセージに表示されているとおりに、
$ sudo gem install sqlite3 -v ‘1.3.6’
としたら、その先まで進んだが、push heroku server のところでまたエラー。
プロジェクト名が既に使われているということらしい。
あれ?っと思って Heroku にログインして見てみたら、もうできてたらしい。
今度は、 Open App in Web Browser を選択してみたら、ブラウザで開いた。
これはできたのか?
フレームワークしかないから、いまいち自分のだっていう実感はないけど、とりあえず動いたらしい。
まずはここまで。