Rails : registration + facebook
Bonsoir,
Je me suis lancé sur Rails dans le cadre d'une application iOS. Pour cette app, l'user doit se register et se loguer.
Pour le moment j'ai donc une base données avec une table users et les champs classiques (email, password, salt). La registration et le login fonctionnent bien.
J'aimerai intégrer le registration/login Facebook dans l'application. C'est là que ça devient flou pour moi.
Facebook propose un tutorial pas à pas qui a l'air bien fait. Mais comment faire niveau Rails (enfin la techno on s'en fou je pense) pour manager la base de donnée avec ce type de login ? (token etc ...)
Comment faire ensuite si l'user décide de vouloir se loguer via la méthode classique et vice versa ?
C'est vraiment flou et mon post tourne vraiment autour du process.
Il me semble que Ali a mis en place ce système pour l'application FoodReporter
/smile.png' class='bbc_emoticon' alt=':)' />
Si tu lis ce post ...
/rolleyes.gif' class='bbc_emoticon' alt='::)' />
Je me suis lancé sur Rails dans le cadre d'une application iOS. Pour cette app, l'user doit se register et se loguer.
Pour le moment j'ai donc une base données avec une table users et les champs classiques (email, password, salt). La registration et le login fonctionnent bien.
J'aimerai intégrer le registration/login Facebook dans l'application. C'est là que ça devient flou pour moi.
Facebook propose un tutorial pas à pas qui a l'air bien fait. Mais comment faire niveau Rails (enfin la techno on s'en fou je pense) pour manager la base de donnée avec ce type de login ? (token etc ...)
Comment faire ensuite si l'user décide de vouloir se loguer via la méthode classique et vice versa ?
C'est vraiment flou et mon post tourne vraiment autour du process.
Il me semble que Ali a mis en place ce système pour l'application FoodReporter
Si tu lis ce post ...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Par contre, je te rejoins sur ce point: dans tous les cas (php ou Rails), tu attaqueras toujours des URL...
Regarde aussi du côté des plugins Rails Facebook:
https://www.ruby-toolbox.com/search?utf8=✓&q=facebook
Ou encore ce RailsCast:
http://railscasts.com/episodes/360-facebook-authentication?view=asciicast
N'hésite pas si tu as une question plus précise sur Rails.
Je débute vraiment sur Rails.
Pour le moment j'ai juste un contrôleur que ma route appelle en fonction de l'URL.
J'ai donc ça au niveau du contrôleur :
Je ne sais pas si c'est vraiment la bonne méthode à adopter ...
Par contre, tu devrais avoir beaucoup plus de code localisé dans ton modèle User que dans le contrôleur.
Par exemple, tu pourrais avoir une méthode authenticate dans User:
Et une méthode privée pour encrypter le pass dans User:
(j'utilise bcrypt et non Digest mais chacun sa techno)
Voilà , pour résumer, pense au MVC !
(pour ma part, c'est Rails qui m'a le plus fait comprendre le MVC)
Pour Digest j'ai trouvé ça sur le net. Je regarderai bcrypt.
Thx !
En gros , t'aurais ça:
Les deux premières ayant des id uniques même entres-elles et linkés sur la dernière qui, elle, regroupe toutes les informations communes à chaque user.
Je ne sais pas si c'est une bonne idée. J'avais pensé partir sur une table users unique avec des champs ne servant qu'aux users facebook et d'autres ne servant qu'aux standard users. Certains seraient donc vide selon le type adopté.
Vous avez un avis ?
Avec 2 méthodes:
- authenticate(login, pass)
- authenticate_with_facebook_account(login, pass)
Après, comme je le disais, je ne sais pas du tout comment marche l'authentification facebook.
Je suppose qu'on envoie le login/pass aux API facebook et que FB renvoie les infos d'identification, du coup, tu peux ouvrir une session Rails avec les infos de la table. Je n'ai pas regardé le RailsCast sur FB.
Pour l'auth facebook en gros là j'arrive à me log avec leur SDK et à récupérer l'ID de l'user fb associé. Du coup la première fois que l'user se log je chope l'id que j'envoie en base chez moi puis je l'utilise par la suite pour récupérer ses infos
Je pense aussi envoyer à chaque requête une clef secrète (un hash de mon CFBundleVersion par ex) pour sécuriser un peu plus la requête.
J'ai des images que j'aimerai sans doute pouvoir envoyer sur le clous si je veux faire une app iPad et même pour d'autres plateforme. Et si l'user delete l'app il pourra récupérer son compte avec vraiment toutes les images. Je suis tiraillé ...
Parse a l'air cool (1 million de call API et 1Go de stockage). Ou sinon je mets en place mon propre système de cloud.
Rails fabrique un token par défaut que tu peux envoyer et récupérer à chaque requête.
J'utilise le gem Paperclip pour les images, et j'envoie tout sur Amazon S3.
L'avantage d'Amazon S3, c'est le coût...
Je gère les compte users sur mon serveurs.
En gros, ça donne ça dans le modèle et basta, rien d'autre à faire:
Sinon, je compte aussi essayer Parse 1 de ses 4.
Oui et le cauchemar je veux l'éviter. Donc du coup sans doute une synchro Helios / Parse juste la base de donnée, puis un Amazon S3 pour les media car en effet ça coute rien du tout.
- upload c'est le nom du dossier que tu appelles comme tu veux (il se trouvera dans /public)
- :class, c'est le nom du modèle
- :attachement c'est le nom du champ dans la table qui stocke le nom du fichier
- oublie exploded_id (c'est un truc perso), normalement, il y a :id, l'id du record
- :style, c'est "thumb", "full", "medium"... si tu décides de faire plusieurs versions de l'image
- :basename est le nom du fichier avec l'extension
Bon, enfin, tu gères ça comme tu veux.
Soit en local sur ton serveur, soit tu envoies tout sur Amazon.