Comment puis-je intégrer Facebook SDK de connexion avec cakephp 2.x?
Il semble y avoir très peu ou pas de place à la date de ressources sur l'intégration de Facebook se connecter avec cakephp composant Auth en ligne. J'ai trouvé les ressources suivantes:
- Vieux Boulangerie De L'Article avec cakephp 1.3? et une ancienne version de Facebook SDK
- Cakephp Plugin par webtechnick qui semble être en cours de développement
Autre que ce que j'ai trouvé ne connaît pas de ressources. Je voulais l'intégration plus souple (sans utiliser de magie plugin) que possible. Donc, après beaucoup de recherche j'ai enfin cuit une solution décente qui je partage ici aujourd'hui. Merci de contribuer comme je suis assez nouveau à gâteau.
OriginalL'auteur shxfee | 2013-08-03
Vous devez vous connecter pour publier un commentaire.
Intégration de Cakephp 2.x Auth avec Facebook Auth pour une authentification de l'utilisateur
Pour commencer, vous devriez lire sur le fantastique cakePHP Composant Auth et suivez les Simple d'Authentification et d'Autorisation de l'Application tutoriel de cake, livre 2.x (en Supposant que vous avez également suivi les deux premiers tutoriels de la série. Après vous avez terminé, vous devriez avoir réussi à créer une simple application cakePHP avec l'utilisateur, l'authentification et l'autorisation.
Ensuite, vous devez télécharger le facebook SDK et obtenir une L'ID de l'application de facebook.
D'abord, nous allons copier le Facebook sdk App/Fournisseurs. Ensuite, nous allons à l'importation et l'initialiser dans le AppController beforeFilter méthode.
Nous sommes de l'initialisation de l'Facebook SDK dans AppController, de sorte que nous avons accès à elle par le biais de l'application. Ensuite, nous allons générer le Facebook URL de connexion à l'aide du SDK et de le passer à la vue. J'ai l'habitude de le faire dans le beforeRender méthode.
Remarque: La configuration ci-dessus les détails (appId & secret) doit de préférence être enregistrés dans App/Config/facebook.php. Vous devez ensuite utiliser gâteau Configurer.
Nous mettrons à jour notre disposition afin que nous puissions afficher ce lien pour facebook de connexion pour tous les utilisateurs qui ne sont pas identifiés. Remarquez comment nous avons mis en
redirect_uri
à nos applications de l'Utilisateur/login action. C'est ainsi qu'une fois que facebook a authentifié l'utilisateur, nous pouvons nous connecter à lui en utilisant le gâteau::Auth. Il existe plusieurs avantages à cela, y compris la solution de cette question.Lorsque l'utilisateur clique sur le lien de connexion, facebook SDK de connexion de l'utilisateur et le rediriger vers notre application Users/login. Nous mettrons à jour cette action pour la manipulation de ce:
Et nous sommes de fait! La plupart de la gros du travail est fait par cette action comme vous pouvez le voir. De préférence, vous devriez déplacer certains le code ci-dessus dans UserModel. Voici donc un résumé de ce qui se passe.
À nous d'abord de vérifier si la demande de connexion est envoyer dans le formulaire de connexion de notre application @ Users/login. Si elle l'est, il nous suffit alors de connecter l'utilisateur. Sinon, nous vérifions si l'utilisateur existe dans notre base de données et si il n'journal lui ou créez un nouvel utilisateur, puis ouvrez une session sur lui.
Être prudent de vérifier que l'utilisateur plus de leur e-mail, à l'instar de leurs facebook_id. Sinon, il y a une chance que l'utilisateur peut modifier leur facebook e-mail et de détourner un autre utilisateur de votre application.
Bon Codage!
Semble être une approche valable (pas testé encore). Donc, pourriez-vous marquer comme la accepté de répondre puisque c'est ce que vous vous retrouviez à l'aide?
Merci homme, cela m'a aidé beaucoup, la seule chose, je tiens à atteindre est d'avoir une fenêtre pop-up de connexion, au lieu de rediriger vers une nouvelle url: ajout de
"display"=>"popup",
à la getLoginUrl ne semble pas fonctionner. MerciJe ne suis pas en mesure de recevoir des e-mails à l'aide de votre solution
Le Facebook SDK changé depuis que j'ai posté ce. Vous devriez lire à propos de ce qui a changé dans les docs
OriginalL'auteur shxfee