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 %></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.
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.