Comment récupérer les informations de l'utilisateur de Facebook dans une application Rails ?

Avec Facebook, API Graph et la création de la Protocole Open Graph, il est désormais plus facile que jamais de lire et d'écrire des données entre Facebook et une application Rails, ainsi que vers le “ social graph ”. Voici quelques-unes des possibilités :

  • Vous pourriez transformer votre site web en une page aux fonctionnalités complètes, similaire à celles de Facebook, comme si vous étiez directement sur Facebook.
  • Vous pouvez permettre à vos utilisateurs de se connecter à l'aide de leurs identifiants Facebook et de personnaliser leur expérience grâce à des paramètres issus de leur profil Facebook.
  • Vous pourriez ajouter un Comme Ajoutez un bouton à chaque élément de votre page (images, morceaux de musique, articles, etc.) et indiquez à vos utilisateurs quels sont leurs amis qui ont aimé votre contenu.

Étapes pour créer une application et récupérer des informations

Un « app_id » et une « api_secret_key » Facebook sont nécessaires

cliquez sur le lien

https://developers.facebook.com/apps

1. Créer une nouvelle application sur Facebook
  • Indiquez le nom de l'application (exemple : sample_app)

  • Nous devons alors renseigner les informations suivantes :

  • Domaine de l'application : localhost

  • URL du site web : http://localhost/3000/

Sur cette même page, on trouve l'App ID et l'App Secret. Cela ressemble à ceci :

ID de l'application : 378271044441102

Clé de l'application : 567772fd2bef4dda7a404b02r4567c758

2. Créer une application Rails

Voici les étapes à suivre pour créer application rails

  • rails new facebook_app
  • sudo gem install fb_graph
  • add to Gemfilegem “fb_graph”
  • sudo bundle install
  • Créer une page d'index pour fb_loginrails ; générer les pages du contrôleur index
  • set index to root page in config/routes.rbroot :to => “pages#home”
  • Créer une authentification pour l'application (authentification simple)
  • Création d'un contrôleur Facebook et d'un modèle Facebook avec :Identifier => string:access_token => string
  • rails generate scaffold facebook identifier:string access_token:string
  • rails generate controller dashboard show
  • Dans le contrôleur « pages », rediriger vers la page « dashboard:show » si l'utilisateur est déjà authentifié / controller/pages_controller.rb

indice déf

redirect_to dashboard_url si l'utilisateur est authentifié ?

fin

Si l'authentification n'a pas été effectuée, la page « root_path » sera chargée, c'est-à-dire « pages/index » ; créez un élément « fb_login » sur cette page pour vous authentifier.

<% if authenticated? %>

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

<% else %>

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

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

<% fin %>

3. Collez le code de script suivant (pour le bouton de connexion 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,

statut : vrai

});

</script>

<script type=”text/javascript”>

$(function () {

<% if flash[:error] %>

$.gritter.add({

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

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

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

temps : 5 000

});

<% elsif flash[:notice] %>

$.gritter.add({

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

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

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

temps : 3000

});

<% fin %>

});

</script>

Le code ci-dessus sert à authentifier l'utilisateur via Facebook. Une fois l'authentification effectuée, l'utilisateur doit être redirigé vers l'URL du tableau de bord afin d'afficher ses informations récupérées depuis Facebook. Certains paramètres Facebook doivent être intégrés dans le modèle et le contrôleur Facebook.

Dans le fichier controller/facebook_controller.rb.

before_filter :require_authentication, :only => :destroy

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

# gère le cookie d'authentification Facebook généré par le SDK JavaScript

définitivement montrer

auth = Facebook.auth.from_cookie(cookies)

authentifier Facebook.identify(auth.user)

redirect_to dashboard_url

fin

# prend en charge le flux OAuth standard : début

définitivement nouveau

client = Facebook.auth(callback_facebook_url).client

redirect_to client.authorization_uri(

:scope => Facebook.config[:scope]

)

fin

# prend en charge le flux OAuth standard : callback

créer par défaut

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

authentifier Facebook.identify(user)

redirect_to dashboard_url

fin

définitivement détruire

annuler l'authentification

redirect_to root_url

fin

privé

def oauth2_error(e)

flash[:error] = {

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

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

}

redirect_to root_url

fin

4. Collez ce code dans le fichier facebook.rb

def profil

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

fin

class << self

étendre 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’]

}

autre

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

fin

rescue Errno::ENOENT => e

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

fin

def app

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

fin

def auth(redirect_uri = nil)

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

fin

def identifier(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_

fin

fin

Nous sommes désormais prêts à récupérer les informations de l'utilisateur s'il s'est authentifié. Une fois l'authentification effectuée, la page le redirigera vers dashboard_url,

code dans controller/dashboard_controller.rb

before_filter :require_authentication k

vue pour dashboard/show.html.erb

<h2>Profil de l'utilisateur</h2>

Nom d'utilisateur

Nom

Prénom

Deuxième prénom

Nom de famille

Genre

Lien

E-mail

À propos

Anniversaire

Travail

Le code ci-dessus sert à afficher les informations relatives à l'utilisateur.

5. Créez enfin le fichier facebook.rb dans le répertoire config

développement : &defaults

client_id: “your facebook app_id”

client_secret: “facebook secret id”

champ d'application : user_about_me, friends_about_me, user_activities, friends_activities, user_birthday,

anniversaires_d'amis,_visites_de_l'utilisateur,_visites_d'amis,_parcours_scolaire_de_l'utilisateur,

amis_formation_parcours, événements_utilisateur, événements_amis, groupes_utilisateur, groupes_amis,

ville_d'origine_de_l'utilisateur,ville_d'origine_des_amis,centres_d'intérêt_de_l'utilisateur,centres_d'intérêt_des_amis,ce_que_l'utilisateur_aime,ce_que_les_amis_aiment,

localisation_utilisateur, localisation_amis, notes_utilisateur, notes_amis, présence_en_ligne_utilisateur,

présence_en_ligne_des_amis,_tags_photo_et_vidéo_de_l'utilisateur,_tags_photo_et_vidéo_des_amis,_photos_de_l'utilisateur

test :

<<: *valeurs par défaut

production :

<<: *valeurs par défaut

Prenez contact avec nous.

Abonnez-vous pour les dernières mises à jour

Articles Similaires

À propos de l'auteur du message

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


fr_FRFrench