2010-06-17 5 views
0

Il y a beaucoup de solutions Facebook + Rails, notamment Facebooker, mais ceci et beaucoup d'autres ne sont pas compatibles avec Rails 3. J'utilise actuellement Authlogic pour l'authentification avec mon application, et je veux donner aux utilisateurs la possibilité de Je veux trouver le meilleur moyen d'associer FB et Authlogic. En ce moment je suis en train d'écrire mon propre add-on Authlogic pour Facebook mais si cela a déjà été fait, je ne veux pas refaire le travail de quelqu'un d'autre. Est-ce que quelqu'un sait quelque chose comme ça?API graphique de Facebook avec Rails et Authlogic - méthodologie préférée?

Répondre

0

Cette zone semble être en pleine évolution. J'ai eu du mal à le mettre en place avec Rails 3 puisque aucune des principales bibliothèques facebook de Ruby n'est officiellement mise à jour pour le moment, et les plus récentes ne sont pas documentées.

La façon dont je l'ai fait fonctionner avec Rails 3 était d'utiliser Facebooker2 et Mogli. J'ai fondamentalement pris le code posted here du contrôleur mavli + authlogic oauth et l'ai combiné avec le contrôleur et les méthodes auxiliaires de Facebooker2. Facebooker2 et Mogli ne contiennent aucune documentation (à ce que je sache), mais le code Facebooker2 est relativement simple.

J'ai également dû gérer manuellement certaines validations authlogic afin de les déclencher uniquement pour les inscriptions non-facebook. Voici tout le code spécifique authlogic dans le modèle utilisateur:

class User < ActiveRecord::Base 

    acts_as_authentic do |config| 
    config.validate_email_field = false 
    end 

    validates_length_of :email, :within => 6..100, :if => :is_not_fb_user? 
    validates_format_of :email, :with => Authlogic::Regex.email, :if => :is_not_fb_user? 
    validates_uniqueness_of :email, :if => :is_not_fb_user? 

    def is_fb_user? 
    return false if self.fb_uid.blank? || self.fb_uid == 0 || self.fb_at.blank? 
    return true 
    end 
    def is_not_fb_user?; !self.is_fb_user? end 

    def require_password? 
    if self.is_fb_user? 
     false 
    else 
     new_record? || password_changed? || send(crypted_password_field).blank? 
    end 
    end 
end 

Il pourrait y avoir quelques bugs et je pense qu'il ya une meilleure façon d'aborder ce sujet.

0

Un ami a développé cette gemme pour notre application, alors peut-être que c'est utile sur votre application aussi: http://github.com/pfracarolli/facebook-graph.

+0

Y a-t-il de la documentation pour cette gemme disponible? –

0

Utilisez Omniauth. Il y a un railcast sur ce sujet. Je crois qu'il utilise même en conjonction avec Authlogic:

http://railscasts.com/episodes/235-omniauth-part-1

Juste quelques lignes à votre SessionsController, et quelques lignes dans un fichier de configuration dans config/initializers/omniauth.rb et vous êtes plus ou moins terminé.

+1

Dans l'introduction, il est clairement spécifié: 'Dans cet épisode, nous commençons à l'intégrer avec * Devise *. – RocketR

Questions connexes