Come ottenere le informazioni dell'utente da Facebook all'applicazione Rails?

Con Facebook’s API Graph e la creazione del Protocollo Open Graph, ora è più facile che mai leggere e scrivere dati da Facebook a un'applicazione Rails e viceversa nel “social graph”. Ecco alcune delle possibilità:

  • Potresti trasformare la tua pagina web in una pagina completa simile a quelle di Facebook, proprio come se ti trovassi all'interno di Facebook.
  • Puoi consentire ai tuoi utenti di accedere con le loro credenziali di Facebook e personalizzare la loro esperienza con i parametri ricavati dai loro profili Facebook.
  • Potresti aggiungere un Mi piace Aggiungi un pulsante a ogni oggetto della tua pagina, come immagini, brani musicali, articoli, ecc., e indica ai tuoi utenti quali dei loro amici hanno messo “Mi piace” ai tuoi contenuti.

Passaggi per creare un'applicazione e recuperare informazioni

Sono necessari un app_id e un api_secret_key di Facebook

vai al link

https://developers.facebook.com/apps

1. Crea una nuova app su Facebook
  • Inserisci il nome dell'app (esempio: sample_app)

  • quindi dobbiamo inserire le seguenti informazioni

  • Dominio dell'app: localhost

  • URL del sito web: http://localhost/3000/

Nella stessa pagina possiamo trovare l'ID dell'app e il codice segreto dell'app. Appaiono così:

ID app: 378271044441102

Codice segreto dell'app: 567772fd2bef4dda7a404b02r4567c758

2. Crea un'applicazione Rails

Di seguito sono riportati i passaggi per creare applicazione rails

  • rails new facebook_app
  • sudo gem install fb_graph
  • add to Gemfilegem “fb_graph”
  • sudo bundle install
  • crea pagina indice per fb_loginrails; genera controller; pagine; indice
  • set index to root page in config/routes.rbroot :to => “pages#home”
  • creare l'autenticazione per l'app (autenticazione semplice)
  • creazione di un controller Facebook e di un modello Facebook con :Identifier => string:access_token => string
  • Rails genera uno scaffold per Facebook: identifier:string, access_token:string
  • rails generate controller dashboard show
  • Nel controller "pages", reindirizzare alla pagina dashboard:show se l'utente è già autenticato controller/pages_controller.rb

indice def

redirect_to dashboard_url se l'utente è autenticato?

FINE

Se non si è effettuato l'accesso, verrà caricato il percorso root_path, ovvero pages/index; creare fb_login in questa pagina per effettuare l'accesso.

<% if authenticated? %>

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

<% else %>

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

Facebook.config[:scope] %>”> </fb:login-button>

<% fine %>

3. Incolla il seguente codice di script (per il pulsante di accesso a Facebook)

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

<script>

FB.init({

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

cookie: true,

xfbml: true,

oauth: true,

stato: vero

});

</script>

<script type=”text/javascript”>

$(function () {

<% if flash[:error] %>

$.gritter.add({

title: “<%= flash[:error][:title] %>”,

text : “<%= flash[:error][:message] %>”,

image: “<%= flash[:error][:image] %>”,

time : 5000

});

<% elsif flash[:notice] %>

$.gritter.add({

title: “<%= flash[:notice][:title] %>”,

text : “<%= flash[:notice][:message] %>”,

image: “<%= flash[:notice][:image] %>”,

time : 3000

});

<% fine %>

});

</script>

The above code is used to authenticate user through facebook, after authenticating user should redirect to dashboard url to show his information fetched from facebook. some facebook settings should be code in facebook model, and controller.

In controller/facebook_controller.rb.

before_filter :require_authentication, :only => :destroy

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

# handle Facebook Auth Cookie generated by JavaScript SDK

sicuramente spettacolo

auth = Facebook.auth.from_cookie(cookies)

authenticate Facebook.identify(auth.user)

redirect_to dashboard_url

FINE

# handle Normal OAuth flow: start

sicuramente nuovo

client = Facebook.auth(callback_facebook_url).client

redirect_to client.authorization_uri(

:scope => Facebook.config[:scope]

)

FINE

# handle Normal OAuth flow: callback

sicuramente creare

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

FINE

sicuramente distruggere

unauthenticate

redirect_to root_url

FINE

privato

def oauth2_error(e)

flash[:error] = {

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

:message => e.response[:error][:message]

}

redirect_to root_url

FINE

4. Paste this code in facebook.rb

def profile

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

FINE

class << self

extend 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’]

}

altro

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

FINE

rescue Errno::ENOENT => e

raise StandardError.new(“config/facebook.yml could not be loaded.”)

FINE

def app

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

FINE

def auth(redirect_uri = nil)

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

FINE

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_

FINE

FINE

Now we are ready to get user info if he authenticated, once he authenticate page will redirect to dashboard_url,

code in controller/dashboard_controller.rb

before_filter :require_authentication k

view for dashboard/show.html.erb

<h2>Profilo utente</h2>

<dl>

<dt>Username</dt>

<dd><%= current_user.profile.username %></dd>

<dt>Name</dt>

<dd><%= current_user.profile.name %></dd>

<dt>First Name</dt>

<dd><%= current_user.profile.first_name %></dd>

<dt>Middle Name</dt>

<dd><%= current_user.profile.middle_name %></dd>

<dt>Last Name</dt>

<dd><%= current_user.profile.last_name %></dd>

<dt>Gender</dt>

<dd><%= current_user.profile.gender %></dd>

<dt>Link</dt>

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

<dt>Email</dt>

<dd><%= current_user.profile.email %></dd>

<dt>About</dt>

<dd><%= current_user.profile.about %></dd>

<dt>Birthday</dt>

<dd><%= current_user.profile.birthday %></dd>

<dt>Work</dt></dl>

The above code is to show user information.

5. Finally create facebook.rb file in config

development: &defaults

client_id: “your facebook app_id”

client_secret: “facebook secret id”

scope: 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

test:

<<: *defaults

production:

<<: *defaults

Mettiti in contatto con noi.

Iscriviti per gli ultimi aggiornamenti

Articoli correlati

Informazioni sull'autore del post

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


it_ITItalian