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.