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