Facebook から Rails アプリケーションにユーザー情報を取得するにはどうすればよいですか?

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 %&gt;</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

テスト:

<<: *デフォルト設定

生産:

<<: *デフォルト設定

ご連絡ください。

最新のアップデートを購読する

関連記事

投稿者について

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


jaJapanese