mercredi 24 mars 2010

[SYMFONY][FACEBOOK] Récupérer les informations de profil : FACEBOOK CONNECT

Pour récupérer les informations de l'utilisateur lorsqu'il s'enregistre à votre site ou bien en appuyant sur un bouton "remplir automatiquement mon profile", il faut créer une fonction qui va faire ca pour nous.

J'ai mis cette fonction dans la classe sfFacebook, c'est pour moi le plus logique :

public static function updateSfGuardUserWithFacebookAccount($sfGuardUser) {
        $sfGuardUserProfile$sfGuardUser->getProfile();
        $infos = sfFacebook::getFacebookApi()->users_getInfo($sfGuardUserProfile->getFacebookUid(), array("first_name", "last_name", "username", "birthday_date", "email_hashes", "proxied_email", "sex", "pic", "pic_small", "relationship_status", "current_location", "activities", "interests", "music", "tv", "movies", "books", "website"));
        $sfGuardUserProfile->setFirstName($infos[0]["first_name"]);
        $sfGuardUserProfile->setLastName($infos[0]["last_name"]);
        $sfGuardUserProfile->setEmailHash(serialize($infos[0]["email_hashes"]));
        $sfGuardUserProfile->setEmail($infos[0]["proxied_email"]);
        $sfGuardUserProfile->setBirthdayDate($infos[0]["birthday_date"]);
        $sfGuardUserProfile->setSex($infos[0]["sex"]);
        $sfGuardUserProfile->setPic($infos[0]["pic"]);
        $sfGuardUserProfile->setPicSmall($infos[0]["pic_small"]);
        $sfGuardUserProfile->setRelationshipStatus($infos[0]["relationship_status"]);
        $sfGuardUserProfile->setActivities($infos[0]["activities"]);
        $sfGuardUserProfile->setInterests($infos[0]["interests"]);
        $sfGuardUserProfile->setMusic($infos[0]["music"]);
        $sfGuardUserProfile->setTv($infos[0]["tv"]);
       $sfGuardUserProfile->setMovies($infos[0]["movies"]);
        $sfGuardUserProfile->setBooks($infos[0]["books"]);
        $sfGuardUserProfile->setWebsite($infos[0]["website"]);
        $sfGuardUserProfile->save();
        return true;
    }
 Ensuite il faut simplement appeler cette fonction, soit avec le déclencheur onlogin="" sur le bouton facebook connect, soit avec une fonction jquery :


function updateProfileWithFacebook() {
 $.ajax({
 url: '/sfFacebookConnectAuth/UpdateGuardWithFBProfile',
 success: function(profile) { $(".profile").html(profile);
 makeEditableField();},
 error: function(e) { alert("Une erreur est survenue. Nous n'arrivons pas à contacter les serveurs de Facebook. Merci de bien vouloir nous excuser pour ce désagrément et réessayer plus tard."   e); }
 });
}
Vous pouvez trouver la liste des informations récuperables ici
Enjoy !

Aucun commentaire:

Enregistrer un commentaire

Bonjour,