Jeton d'accès de concevoir+omniauth-facebook authentification pour l'utilisation dans les fb-graph
J'ai utilisé concevoir et omniauth-facebook dans mon Rails 3 application pour Facebook authentification, basé sur ce tutoriel: L'ajout de Facebook auth Rails 3.1 application, et c'est vraiment génial de travailler!
Mais maintenant, je veux avoir pleins de Facebook intégration dans mon application, avec qui je peux accès de l'utilisateur, photos, amis, etc., et pour cela, je pense à l'aide de fb_graph. fb_graph nécessite un jeton, et je voulais savoir comment faire pour modifier mon modèle utilisateur pour enregistrer le jeton et l'utiliser dans fb_graph. Toute aide à ce sujet, sera très appréciée.
C'est ainsi que mon modèle d'Utilisateur ressemble maintenant:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
has_many :photos
has_many :scrapbooks
def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
data = access_token.extra.raw_info
if user = User.where(:email => data.email).first
user
else # Create a user with a stub password.
User.create!(:email => data.email, :password => Devise.friendly_token[0,20])
end
end
def self.new_with_session(params, session)
super.tap do |user|
if data = session["devise.facebook_data"] && session["devise.facebook_data"]["extra"]["raw_info"]
user.email = data["email"]
end
end
end
end
Facebook
modèle et de les stocker dans la table, mais je ne suis pas sûr que c'est le meilleur moyen. 😛OriginalL'auteur humairatasnim | 2012-04-08
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire ceci:
Vous devrez également ajouter :authentication_token ou tout ce que vous avez nommé pour la attr_accessible
Le seul problème, je suis confronté à maintenant, c'est que le jeton fait expiré. Je deauthorized l'application à partir de mon facebook à des fins de test, et maintenant quand j'essaye de réautoriser moi-même, j'ai cette erreur:
OAuthException :: An active access token must be used to query information about the current user
Est-il possible que je puisse actualiser le jeton à chaque fois qu'un utilisateur ouvre une session dans mon application, pour éviter le jeton de se expiré?Peut-être prendre une méthode dans le modèle de l'utilisateur qui appelle l'auto.authentication_token = nil; auto.enregistrer; au cours de la deauth. Vous ne savez pas comment gérer cela encore. Dans quelques jours je vais probablement.
Est-ce que qqn a une idée de comment le jeton d'accès peut être actualisée si vous avez plus d'un fournisseur d'authentification (e.g facebook et twitter)? Exemple: l'utilisateur se connecte à twitter, mais il ou elle est relié à un facebook compte. Et après 60 jours, le facebook expiration de ce jeton. Alors, comment pourrais-je actualiser tous les access_tokens en même temps?
OriginalL'auteur James Robey
Je cherchais la même chose. J'ai essayé de mettre en œuvre James Robey{s réponse et est tombé dans la même erreur:
OAuthException :: An active access token must be used to query information about the current user
. Puis j'ai réalisé authentication_token a pas été enregistré de cette façon. Après avoir cherché un moment, j'ai trouvé dans FbGraph + OmniAuth + Facebook API Graphique sur l'application Rails un moyen de le faire avec les variables de session, par la mise en œuvre de l'jeton de sauvegarde en cours de omniauth de rappel, puis de l'utiliser lors de l'appel de fb_graph. Donc, il pourrait être quelque chose comme ceci:omniauth de rappel (app/controllers/utilisateurs/omniauth_callbacks_controller.rb)
Puis lors de l'appel de fb_graph
Je ne sais pas si c'est le meilleur moyen, mais fonctionne jusqu'à présent.
OriginalL'auteur Fabián Contreras
malade vous référer à https://github.com/nov/fb_graph/wiki/Page-Management
où nov unis: Vous avez besoin de la page du jeton d'accès pour gérer votre page.
Votre (un utilisateur) jeton d'accès ne fonctionne pas ici.
suivre son lien vers le facebook site des développeurs pour plus d'info
vous aurez besoin des utilisateurs access_token et je le fais par le biais de omniauth-facbook https://github.com/mkdynamic/omniauth-facebook
qui vous récupérer à l'utilisation par le premier saisissant cette initialiseur dans votre application
(remarque: vous pouvez modifier les autorisations sur le champ d'application ici facebook développeurs d'autorisations de connexion pour plus d'
il y a quelques rouages de omniauth et omniauth-facebook mais le jist est
lorsque vous obtenez le rappel de facebook vous avez un rack omniauth de hachage à partir de la demande
de la a dire que vous pouvez accéder les utilisateurs jeton d'accès comme ce
vous pouvez ensuite fournir ce jeton dans votre fb_graph page appel
alors vous aurez simplement à être en mesure de créer une note en appelant la méthode désirée sans une référence à l'jeton d'accès
OriginalL'auteur Manish Shrivastava