Hur får man användarinformation från Facebook till Rails-applikationen?

Med Facebook Graf API och skapandet av Öppna Graph-protokollet, det är nu enklare än någonsin att läsa och skriva data från facebook till rails-applikationen och tillbaka till den "sociala grafen". Här är några av möjligheterna:

  • Du kan förvandla din webbsida till en fullfjädrad Facebook-liknande sida, precis som om du var inne på Facebook.
  • Du kan ge dina användare möjligheten att logga in med sina Facebook-uppgifter och anpassa sin upplevelse med parametrar hämtade från deras Facebook-profiler.
  • Du kan lägga till en Tycka om knappen till varje objekt på din sida som bilder, låtar, artiklar etc. och berätta för dina användare vilka vänner till dem som har gillat ditt innehåll.

Steg för att skapa applikation och hämta information

Ett facebook-app_id och api_secret_key behövs

gå till länken

https://developers.facebook.com/apps

1. Skapa ny app på facebook
  • Ge appnamn (exempel: sample_app)

  • då måste vi fylla i följande information

  • Appdomän: localhost

  • webbadress: http://localhost/3000/

På samma sida kan vi hitta App Id & App Secret . Det ser ut som

App-id: 378271044441102

Appens hemlighet: 567772fd2bef4dda7a404b02r4567c758

2. Skapa Rails-applikation

Följande är stegen för att skapa rälsapplikation

  • rails nya facebook_app
  • sudo gem installera fb_graph
  • lägg till Gemfilegem “fb_graph”
  • sudo bundle installera
  • skapa indexsida till fb_loginrails generera kontrollsidor index
  • ställ in index till rotsida i config/routes.rbroot :to => "pages#home"
  • skapa autentisering för app (enkel autentisering)
  • skapa facebookkontroller och facebookmodell med :Identifier => string:access_token =>sträng
  • skenor genererar ställning Facebook-identifierare:sträng access_token:sträng
  • skenor genererar kontrollpanelen visar
  • I pages controller omdirigera sidan till instrumentpanelen: visa om den är autentiserad redancontroller/pages_controller.rb

def index

redirect_to dashboard_url om den är autentiserad?

slutet

Om den inte är autentiserad kommer root_path att laddas, dvs. pages/index, skapa fb_login på denna sida för att autentisera.

<% om den är autentiserad? %>

<p><%= link_to “Logout”, facebook_path, :method => :radera %&gt;</p>

<% annat %>

<fb:login-button length=”long” onlogin=”location.href = ‘ '" scope="<%=

Facebook.config[:scope] %>”>

<% slut %>

3. Klistra in följande skriptkod (för Facebook-inloggningsknapp)

<script src=”https://www.railscarma.com/wp-content/uploads/2013/02/all.js”></script>

<script>

FB.init({

appId: "<%= Facebook.config[:client_id] %>",

kaka: sant,

xfbml: sant,

oauth: sant,

status: sant

});

</script>

<script type=”text/javascript”>

$(funktion () {

<% om blixt[:fel] %>

$.gritter.add({

titel: "<%= flash[:fel][:titel] %>",

text : "<%= flash[:fel][:meddelande] %>",

bild: "<%= flash[:fel][:bild] %>",

tid: 5000

});

<% elsif flash[:notice] %>

$.gritter.add({

title: "<%= flash[:notice][:title] %>",

text : "<%= flash[:notice][:meddelande] %>",

bild: "<%= flash[:notice][:image] %>",

tid: 3000

});

<% slut %>

});

</script>

Ovanstående kod används för att autentisera användare via facebook, efter autentisering bör användaren omdirigera till instrumentpanelens webbadress för att visa hans information hämtad från facebook. vissa Facebook-inställningar bör vara kod i facebook-modell och kontroller.

I controller/facebook_controller.rb.

before_filter :require_authentication, :only => :destroy

rescue_from Rack::OAuth2::Client::Error, :with => :oauth2_error

# hanterar Facebook Auth Cookie genererad av JavaScript SDK

def show

auth = Facebook.auth.from_cookie(cookies)

autentisera Facebook.identify(auth.user)

redirect_to dashboard_url

slutet

# handtag Normalt OAuth-flöde: start

def ny

klient = Facebook.auth(callback_facebook_url).client

redirect_to client.authorization_uri(

:scope => Facebook.config[:scope]

)

slutet

# handtag Normalt OAuth-flöde: återuppringning

def skapa

klient = Facebook.auth(callback_facebook_url).client

client.authorization_code = params[:kod]

access_token = klient.access_token! :client_auth_body

user = FbGraph::User.me(access_token).fetch

autentisera Facebook.identify(användare)

redirect_to dashboard_url

slutet

def förstöra

oäkta

redirect_to root_url

slutet

privat

def oauth2_error(e)

flash[:error] = {

:title => e.response[:error][:typ],

:meddelande => e.svar[:fel][:meddelande]

}

redirect_to root_url

slutet

4. Klistra in den här koden i facebook.rb

def profil

@profile ||= FbGraph::User.me(self.access_token).fetch

slutet

klass << själv

utöka 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']

}

annan

YAML.load_file(“#{Rails.root}/config/facebook.yml”)[Rails.env].symbolize_keys

slutet

räddning Errno::ENOENT => e

raise StandardError.new(“config/facebook.yml kunde inte laddas.”)

slutet

def app

FbGraph::Application.new config[:client_id], :secret => config[:client_secret]

slutet

def auth(redirect_uri = noll)

FbGraph::Auth.new config[:client_id], config[:client_secret], :redirect_uri => redirect_uri

slutet

def identifi(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_.spara!

_fb_user_

slutet

slutet

Nu är vi redo att få användarinformation om han autentiserats, när han autentiserat kommer sidan att omdirigera till dashboard_url,

kod i controller/dashboard_controller.rb

före_filter :require_autentication k

visa för dashboard/show.html.erb

<h2>Användarprofil</h2>

Användarnamn

<%= current_user.profile.username %>

namn

<%= aktuell_användare.profil.namn %>

Förnamn

<%= current_user.profile.first_name %>

Mellannamn

<%= current_user.profile.mellannamn %>

Efternamn

<%= current_user.profile.last_name %>

Kön

<%= current_user.profile.gender %>

Länk

<%= link_to current_user.profile.link, current_user.profile.link %>

E-post

<%= current_user.profile.email %>

Handla om

<%= aktuell_användarprofil.om %>

Födelsedag

<%= current_user.profile.birthday %>

Arbete

Ovanstående kod är till för att visa användarinformation.

5. Skapa slutligen facebook.rb-filen i config

utveckling: &standardvärden

client_id: "ditt facebook-app_id"

client_secret: "facebook hemligt id"

scope: user_about_me,vänner_om_mig,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,

användare_hemstad, vänner_hemstad, användarintressen, vänner_intressen, användare_gillar, vänner_gillar,

user_location, friend_location, user_notes, friend_notes, user_online_närvaro,

vänner_närvaro online, användarfoto_videotaggar, vänner_foto_videotaggar, användarfoton

testa:

<<: *standardvärden

produktion:

<<: *standardvärden

Kontakta oss.

Prenumerera för de senaste uppdateringarna

relaterade inlägg

1 reaktion på ”How To Get User Information From Facebook To Rails Application?”

  1. En imponerande andel! Jag har precis vidarebefordrat detta till en kollega som har dirigerat
    lite research om detta. Och han köpte faktiskt frukost till mig på grund av det faktum
    att jag snubblade över det för honom... lol. Så låt mig omformulera
    detta…. Tack för måltiden!! Men ja, tack för att du ägnade lite tid åt att prata om detta här på din blogg.

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

sv_SESwedish