なお、クライアントのサンプルアプリでは、Facebookが公開しているOAuth2.0用ライブラリを使用する(実は、Facebookのライブラリでは、OAuth2.0ライブラリを呼び出している)。
①以下のサイトにアクセスし、アプリを登録する。
https://developers.facebook.com/apps
Client IDとClient secretが作成される。
②gemコマンドを使用し、Facebookが公開しているOAuth2.0ライブラリをインストールする。
C:\Users\yasu\clientapp\facebook>gem install facebook_oauth
Fetching: facebook_oauth-0.3.0.gem (100%)
Successfully installed facebook_oauth-0.3.0
1 gem installed
Installing ri documentation for facebook_oauth-0.3.0...
Installing RDoc documentation for facebook_oauth-0.3.0...
③railsのサンプルアプリケーションを作成する。
c:\Users\yasu\clientapp>rails new facebookexist
create README
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/assets/images/rails.png
create app/assets/javascripts/application.js
create app/assets/stylesheets/application.css
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/mailers
create app/models
create app/views/layouts/application.html.erb
create app/mailers/.gitkeep
create app/models/.gitkeep
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/secret_token.rb
create config/initializers/session_store.rb
create config/initializers/wrap_parameters.rb
create config/locales
create config/locales/en.yml
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create doc
create doc/README_FOR_APP
create lib
create lib/tasks
create lib/tasks/.gitkeep
create lib/assets
create lib/assets/.gitkeep
create log
create log/.gitkeep
create public
create public/404.html
create public/422.html
create public/500.html
create public/favicon.ico
create public/index.html
create public/robots.txt
create script
create script/rails
create test/fixtures
create test/fixtures/.gitkeep
create test/functional
create test/functional/.gitkeep
create test/integration
create test/integration/.gitkeep
create test/unit
create test/unit/.gitkeep
create test/performance/browsing_test.rb
create test/test_helper.rb
create tmp/cache
create tmp/cache/assets
create vendor/assets/stylesheets
create vendor/assets/stylesheets/.gitkeep
create vendor/plugins
create vendor/plugins/.gitkeep
run bundle install
Fetching source index for http://rubygems.org/
Using rake (0.9.2.2)
Using multi_json (1.0.4)
Using activesupport (3.1.2)
Using builder (3.0.0)
Using i18n (0.6.0)
Using activemodel (3.1.2)
Using erubis (2.7.0)
Using rack (1.3.5)
Using rack-cache (1.1)
Using rack-mount (0.8.3)
Using rack-test (0.6.1)
Using hike (1.2.1)
Using tilt (1.3.3)
Using sprockets (2.1.2)
Using actionpack (3.1.2)
Using mime-types (1.17.2)
Using polyglot (0.3.3)
Using treetop (1.4.10)
Using mail (2.3.0)
Using actionmailer (3.1.2)
Using arel (2.2.1)
Using tzinfo (0.3.31)
Using activerecord (3.1.2)
Using activeresource (3.1.2)
Using ansi (1.4.1)
Using bundler (1.0.21)
Using coffee-script-source (1.1.3)
Installing execjs (1.2.11)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.2)
Using json (1.6.3)
Using rdoc (3.11)
Using thor (0.14.6)
Using railties (3.1.2)
Using coffee-rails (3.1.1)
Using jquery-rails (1.0.19)
Using rails (3.1.2)
Using sass (3.1.11)
Using sass-rails (3.1.5)
Installing sqlite3 (1.3.5)
Using turn (0.8.3)
Using uglifier (1.1.0)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem
is installed.
c:\Users\yasu\clientapp>cd facebook
c:\Users\yasu\clientapp\facebook>rails generate controller Client index callback
create app/controllers/client_controller.rb
route get "client/callback"
route get "client/index"
invoke erb
create app/views/client
create app/views/client/index.html.erb
create app/views/client/callback.html.erb
invoke test_unit
create test/functional/client_controller_test.rb
invoke helper
create app/helpers/client_helper.rb
invoke test_unit
create test/unit/helpers/client_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/client.js.coffee
invoke scss
create app/assets/stylesheets/client.css.scss
④client_controller.rb(C:\Users\yasu\clientapp\facebook\app\controllers配下)を修正する。
----------------------------------------------------------
require "oauth2"
require 'facebook_oauth'
class ClientController < ApplicationController
# コールバック先URL
CALLBACK_URL = "http://openam.yasuyasu.com:3001/client/callback"
# CONSUMER KEY
CONSUMER_KEY = "id" ←★Client IDを設定
# CONSUMER SECRET
CONSUMER_SECRET = "secret" ←★Client secretを設定
# サンプルアプリがFacebookからアクセストークンを取得する際、
# クライアント側でサーバ証明書を検証する(デフォルトの設定)。
# (よくない対応だが、)ここではサーバ証明書を検証しないようにする。
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
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
----------------------------------------------------------
⑤index.html.erb(C:\Users\yasu\clientapp\facebook\app\views\client配下)を修正する。以下を追加する。
<%= link_to 'OAuth', '/client/oauth' %>
⑥callback.html.erb(C:\Users\yasu\clientapp\facebook\app\views\client配下)を修正する。以下を追加する。
<%= @client.me.info %>
⑦WEBrickを起動する。
C:\Users\yasu\clientapp\facebook>rails server -p 3001
=> Booting WEBrick
=> Rails 3.1.2 application starting in development on http://0.0.0.0:3001
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2011-12-12 23:02:08] INFO WEBrick 1.3.1
[2011-12-12 23:02:08] INFO ruby 1.9.3 (2011-10-30) [i386-mingw32]
[2011-12-12 23:02:08] INFO WEBrick::HTTPServer#start: pid=6300 port=3001
⑧ ブラウザで「http://openam.yasuyasu.com:3001/client/index」にアクセスする。Facebook側でサンプルアプリと連携してよいかを確認されるため、認可する。
以下の画面が表示されれば連携が完了である。
0 件のコメント:
コメントを投稿