Bonjour,

On souhaite que les utilisateurs se connectent avec leur compte facebook.
Lorqu'ils sont connectés à leur compte, les champs nom, prénom et email doivent se remplir automatiquement.

Cependant, la page se recharge sans remplir les champs.
Pourtant, en faisant des alertes pour afficher par exemple le prénom, ça marche...
Je vous remercie d'avance pour vos remarques.
Voici les scripts :

action.class
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
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
58
59
60
61
62
63
 
class inscriptionActions extends sfActions
{
    public function preExecute()
    {
        parent::preExecute();
 
        $this->facebook = new Facebook(array(
            'appId'   => sfConfig::get("app_facebookPublish_app_id"),
            'secret'  => sfConfig::get("app_facebookPublish_api_key"),
            'cookie'  => true,
            'baseUrl' => $this->getRequest()->getUri()
        ));
    }
 
    /**
     * Executes index action
     *
     * @param sfRequest $request A request object
     * @return void
     * @access public
     */
    public function executeIndex(sfWebRequest $request)
    {
 
		if ($this->getUser()->isAuthenticated()) // Only if user has been authenticated
        {
			$this->redirect('@entree'); // redirect to home page
		}
 
        // Get Cookie Values from Client Browser
        $cookie = $this>get_facebook_cookie(sfConfig::get("app_facebookPublish_app_id"), sfConfig::get("app_facebookPublish_api_key"));
 
        // If user is already authenticated
        if ($this->getUser()->isAuthenticated())
        {
            $this->redirect('@inscription_je_retrouve_mes_amis');
        }
 
        $gender = "";
        $newbirthDate = null;
 
        // Do this only if cookie was found else send empty values to view
        if ($cookie != null)
        {
            // Get facebook user Details
            try
            {
 
                $facebookId = $cookie['uid'];
 
                // Get Details for Current Facebook User
                $userHtml = file_get_contents("https://graph.facebook.com/" . $cookie['uid']  . "?access_token=" . $cookie['access_token'] );
 
                if ($userHtml != null || $userHtml != "")
                {
                    // Decode Json Data
                    $userObject = json_decode($userHtml);
 
                    // Send values to view
                    $this->getResponse()->setSlot('firstname', $userObject->first_name);
                    $this->getResponse()->setSlot('lastname', $userObject->last_name);
                    $this->getResponse()->setSlot('email', $userObject->email);
le fichier html
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
 
<script type="text/javascript">
var FBAPPID = "<?php echo sfConfig::get("app_facebookPublish_app_id"); ?>";
</script>
<div id="fb-root"></div>
<a id="fb_connect"  onclick="fblogin(); return false;">
	<img alt="Je me connecte avec Facebook" src="/images/inscription/fb_connect.png" />
</a>
 
<form name="inscription" id="inscription" action="<?php echo url_for('@inscription', true); ?>" enctype="application/x-www-form-urlencoded" method="post">
	<div class="cellule_formulaire petit">
		<div><label for="prenom">Prénom</label></div>
		<div class="decorateur_entree petit">
			<input type="text" id="prenom" name="prenom" value="<?php echo get_slot('firstname'); ?>" />
		</div>
		<?php if (strlen(get_slot('firstname')) > 0) : ?>
		<div class="ok_icone"></div>
		<?php endif; ?>
 
	</div>
le fichier js

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
26
27
28
29
30
31
32
33
34
35
 
/**
 * JavaScript pour la partie de Facebook
window.fbAsyncInit = function() {
	FB.init(
	{
		appId: FBAPPID,
    	status: true,
    	cookie: true,
    	xfbml: true,
        oauth: true}
	);
};
 
(function() {
	var e = document.createElement('script'); e.async = true;
	e.src = document.location.protocol + '//connect.facebook.net/fr_FR/all.js';
	document.getElementById('fb-root').appendChild(e);
}());
 
 
/**
 * Login function for facebook
*/
function fblogin() {
	FB.login(function (response) {
		//Control comes back here
		if (response.authResponse) {
			FB.api('/me?fields=first_name,last_name,email', function (response) {
				location.reload();
			});
		}
	},
	{ scope: 'email, status_update, publish_stream, offline_access, user_birthday, user_hometown, user_location' });
}