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:
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:
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.