Facebookの Graph API そして、その Open Graphプロトコル, FacebookとRailsアプリケーションの間でデータを読み書きし、「ソーシャルグラフ」へ書き戻すことが、これまで以上に簡単になりました。その活用例をいくつかご紹介します:
- 自分のウェブページを、まるでFacebookの中にいるかのように、Facebookのような機能をすべて備えたページに変えることができます。.
- ユーザーに、Facebookのアカウント情報を使ってログインできるようにしたり、Facebookのプロフィールから取得したパラメータを用いてユーザー体験をカスタマイズしたりすることができます。.
- 次のようなものを追加することもできます。 「いいね!」 ページ内の画像、楽曲、記事など、あらゆるオブジェクトにボタンを設置し、ユーザーに対して、どの友人がそのコンテンツを「いいね!」したかを伝えましょう。.
アプリケーションの作成と情報の取得の手順
Facebookのapp_idとapi_secret_keyが必要です
リンクにアクセスしてください
https://developers.facebook.com/apps
1. Facebookで新しいアプリを作成する
-
アプリ名を入力してください(例:sample_app)
-
その場合、以下の情報を入力する必要があります
-
アプリのドメイン:localhost
-
ウェブサイトのURL: http://localhost/3000/
同じページに「App Id」と「App Secret」が記載されています。その内容は以下の通りです。
アプリID: 378271044441102
アプリのシークレット:567772fd2bef4dda7a404b02r4567c758
2. Railsアプリケーションを作成する
以下は、作成するための手順です。 レールアプリケーション
- rails new facebook_app
- sudo gem install fb_graph
- Gemfileに「fb_graph」を追加“
- sudo bundle install
- fb_loginrails 用のインデックスページを作成し、コントローラーの index ページを生成する
- config/routes.rbroot 内で、ルートページへのインデックスを設定:to => “pages#home”
- アプリの認証を設定する(簡易認証)
- :Identifier => string:access_token => string を使用して、Facebook コントローラーと Facebook モデルを作成する
- rails generate scaffold facebook identifier:string access_token:string
- rails generate controller dashboard show
- pages_controller.rb では、すでに認証済みの場合は、ページを dashboard:show にリダイレクトします。
デフォルトインデックス
認証済みであれば、dashboard_url にリダイレクトする?
終わり
認証されていない場合、root_path(例:pages/index)が読み込まれます。このページに「fb_login」を作成して、認証を行ってください。.
<% if authenticated? %>
<p><%= link_to “Logout”, facebook_path, :method => :delete %></p>
<% else %>
<fb:login-button length=”long” onlogin=”location.href = ‘'” scope=”<%=
Facebook.config[:scope] %>”>
<%終了%>
3. 以下のスクリプトコード(Facebookログイン用)を貼り付けてください。
<script src=”https://www.railscarma.com/wp-content/uploads/2013/02/all.js”></script>
<script>
FB.init({
appId: “”,
cookie: true,
xfbml: true,
oauth: true,
status: true
});
</script>
<script type=”text/javascript”>
$(function () {
<% if flash[:error] %>
$.gritter.add({
title: “”,
text : “”,
画像:「」、,
時間:5000
});
<% elsif flash[:notice] %>
$.gritter.add({
title: “”,
text : “”,
画像:「」、,
時間:3000
});
<%終了%>
});
</script>
上記のコードは、Facebookを介してユーザーを認証するために使用されます。認証後、ユーザーをダッシュボードのURLにリダイレクトし、Facebookから取得したユーザー情報を表示する必要があります。Facebookに関する一部の設定は、Facebookモデルおよびコントローラーに記述する必要があります。.
controller/facebook_controller.rb 内で。.
before_filter :require_authentication, :only => :destroy
rescue_from Rack::OAuth2::Client::Error, :with => :oauth2_error
#は、JavaScript SDKによって生成されたFacebook認証クッキーを処理します
デフショー
auth = Facebook.auth.from_cookie(cookies)
authenticate Facebook.identify(auth.user)
redirect_to dashboard_url
終わり
#による標準OAuthフローの処理:開始
確かに新しい
client = Facebook.auth(callback_facebook_url).client
redirect_to client.authorization_uri(
:scope => Facebook.config[:scope]
)
終わり
#による通常のOAuthフローの処理:コールバック
デフォルト作成
client = Facebook.auth(callback_facebook_url).client
client.authorization_code = params[:code]
access_token = client.access_token! :client_auth_body
user = FbGraph::User.me(access_token).fetch
authenticate Facebook.identify(user)
redirect_to dashboard_url
終わり
間違いなく破壊する
認証解除
redirect_to root_url
終わり
プライベート
def oauth2_error(e)
flash[:error] = {
:title => e.response[:error][:type],
:message => e.response[:error][:message]
}
redirect_to root_url
終わり
4. このコードを facebook.rb に貼り付けてください
def profile
@profile ||= FbGraph::User.me(self.access_token).fetch
終わり
class << self
ActiveSupport::Memoizable を拡張する
def config
@config ||= if ENV[‘fb_client_id’] && ENV[‘fb_client_secret’] && ENV[‘fb_scope’] && ENV[‘fb_canvas_url’]
{
:client_id => ENV[‘fb_client_id’],
:client_secret => ENV[‘fb_client_secret’],
:scope => ENV[‘fb_scope’],
:canvas_url => ENV[‘fb_canvas_url’]
}
それ以外
YAML.load_file(“#{Rails.root}/config/facebook.yml”)[Rails.env].symbolize_keys
終わり
rescue Errno::ENOENT => e
raise StandardError.new(“config/facebook.yml を読み込めませんでした。”)
終わり
def app
FbGraph::Application.new config[:client_id], :secret => config[:client_secret]
終わり
def auth(redirect_uri = nil)
FbGraph::Auth.new config[:client_id], config[:client_secret], :redirect_uri => redirect_uri
終わり
def identify(fb_user)
_fb_user_ = find_or_initialize_by_identifier(fb_user.identifier.try(:to_s))
_fb_user_.access_token = fb_user.access_token.access_token
_fb_user_.save!
_fb_user_
終わり
終わり
これで、ユーザーが認証を完了した場合にユーザー情報を取得する準備が整いました。認証が完了すると、ページは dashboard_url にリダイレクトされます。,
controller/dashboard_controller.rb 内のコード
before_filter :require_authentication k
dashboard/show.html.erb のビュー
<h2>ユーザープロフィール</h2>
- ユーザー名
- 名前
- 名前
- ミドルネーム
- 姓
- ジェンダー
- リンク
- メール
- 概要
- 誕生日
- 仕事
上記のコードは、ユーザー情報を表示するためのものです。.
5. 最後に、config ディレクトリに facebook.rb ファイルを作成します
開発: &defaults
client_id: “あなたのFacebookアプリID”
client_secret: 「FacebookのシークレットID」“
スコープ:user_about_me、friends_about_me、user_activities、friends_activities、user_birthday、,
friends_birthday,user_checkins,friends_checkins,user_education_history,
friends_education_history,user_events,friends_events,user_groups,friends_groups,
user_hometown、friends_hometown、user_interests、friends_interests、user_likes、friends_likes、,
user_location、friends_location、user_notes、friends_notes、user_online_presence、,
friends_online_presence,user_photo_video_tags,friends_photo_video_tags,user_photos
テスト:
<<: *デフォルト設定
生産:
<<: *デフォルト設定
ご連絡ください。