IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

HybridAuth + FOSUserBundle


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Lead Développeur
    Inscrit en
    Novembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Développeur
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 52
    Points : 75
    Points
    75
    Par défaut HybridAuth + FOSUserBundle
    Bonjour à tous,

    Dans le cadre d'un projet professionel, je dois gerer la connexion via 5 reseaux sociaux :
    • Facebook
    • Google
    • Viadeo
    • LinkedIn
    • Twitter


    Sur Symfony, j'utilise deja le fameux FOSUserBundle, pour la gestion des comptes locaux.

    Pour les reseaux, je souhaite utiliser la librairie HybridAuth (http://hybridauth.sourceforge.net/) qui facilite la tache si on souhaite gerer plusieurs reseaux comme moi ! :p

    Dans mon UserBunble\SocialController, j'ai fais une action me permettant de recuperer les infos d'un utilisateur, par exemple avec Facebook :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    class SocialController extends ContainerAware
    {
        /**
         * Check connection whit a social network
         * 
         * @param string $socialName
         */
        public function checkAction($socialName)
        {
            $config = array(
                'base_url'  => 'http://'.$_SERVER['HTTP_HOST'].'/ha/',
                'providers'     => array(
                    'Facebook'  => array(
                        'enabled'   => true,
                        'keys'      => array(
                            'id'        => 'xxx',
                            'secret'    => 'xxx'
                            ),
                        'scope'     => 'email, user_about_me, user_birthday, user_hometown',
                        'display'   => 'popup'
                    ),
                    'Viadeo'    => array(
                        'enabled'   => true,
                        'keys'      => array(
                            'id'        => 'xxx',
                            'secret'    => 'xxx'
                            ),
                    ),
                    'Twitter'   => array(
                        'enabled'   => true,
                        'keys'      => array(
                            'key'       => 'xxx',
                            'secret'    => 'xxx'
                        )
                    ),
                    'LinkedIn'  => array(
                        'enabled'   => true,
                        'keys'      => array(
                            'key'       => 'xxx',
                            'secret'    => 'xxx'
                        )
                    )
                )
            );
            $hybridauth = new Hybrid_Auth($config);
     
    //        $adapter = $hybridauth->authenticate( "Viadeo" );
    //        $contacts_list = $adapter->api()->get('/me/contacts')->execute();
     
            $adapter = $hybridauth->authenticate( "Facebook" );
     
            $user_profile = $adapter->getUserProfile();
            echo '<pre>';
            print_r($user_profile);
            die('register with: '.$socialName);
        }
    }

    Ce qui me donne en resultat avec /social/check/facebook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Hybrid_User_Profile Object
    (
        [identifier] => 414141
        [webSiteURL] => 
        [profileURL] => http://www.facebook.com/toto
        [photoURL] => https://graph.facebook.com/424242/picture?type=square
        [displayName] => Sullivan Sénéchal
        [description] => 42
        [firstName] => Sullivan
        [lastName] => Sénéchal
        [gender] => male
        [language] => 
        [age] => 
        [birthDay] => 28
        [birthMonth] => 01
        [birthYear] => 1991
        [email] => xxx@gmail.com
        [phone] => 
        [address] => 
        [country] => 
        [region] => Lesquin
        [city] => 
        [zip] => 
    )
    register with: facebook
    Donc c'est cool, j'ai les infos maintenant j'aimerai faire deux cas :

    L'utilisateur est reference sur la base avec son identifiant Facebook
    -> Je le connecte sur le site

    L'utilisateur n'est pas reference
    -> Je le redirige vers le formulaire d'inscription de FOSUB, avec les champs pre-remplis par rapport aux donnees recuperes.

    Ma question est, qu'elles sont les classes FOS a surcharge et la quelle est la meilleur demarche pour arriver a mes fins ?

    Si vous n'avez pas tout compris, n'hesitez pas a me demander des details !

    Merci d'avance de votre aide !

    Sullivan.

  2. #2
    Membre régulier
    Homme Profil pro
    Lead Développeur
    Inscrit en
    Novembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Développeur
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 52
    Points : 75
    Points
    75
    Par défaut
    Bon j'ai finalement choisi de creer mon propre bundle.

    Je vous passe le lien, il est bientot fini, je l'ai fait au mieux pour pouvoir servir au autres dev !

    Lien: https://github.com/Soullivaneuh/SLLHHybridAuthBundle

    Je vous laisse jeter un oeil, si vous avez des questions ou des remarques, n'hesitez pas !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je souhaite à peu de chose prêt faire la même chose que vous.
    J'ai donc créé un controller symfony pour gérer une connexion depuis un réseau social.
    En revanche j'ai un petit problème, je n'arrive pas à inclure le fichier Auth.php dans mon controller et je n'arrive donc pas à faire appel à la classe Hybrid_Auth.

    Pouvez-vous m'indiquer dans votre cas comment vous l'avez inclus. Merci

Discussions similaires

  1. [2.x] [FOSUserBundle] Personnaliser les champs de la table User
    Par Dinduks dans le forum Symfony
    Réponses: 4
    Dernier message: 11/07/2012, 16h25
  2. [2.x] [FOSUserBundle] Comment s'en servir ?
    Par Bleys dans le forum Symfony
    Réponses: 31
    Dernier message: 15/09/2011, 01h21
  3. [2.x] [FOSUserBundle] Utilité des groupes
    Par dourouc05 dans le forum Symfony
    Réponses: 7
    Dernier message: 15/08/2011, 11h32
  4. Réponses: 0
    Dernier message: 04/08/2011, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo