2017-08-31 1 views
0

J'utilise Facebook Api, pour obtenir le prénom, le nom, le courriel et la ville de l'utilisateur. Tout fonctionne bien mais en remplissant inputs. Mes script remplissent les entrées, mais seulement quand je recharge la page. J'ai besoin de remplir les entrées après avoir appuyé sur login button, sans actualiser la page. Est-ce possible?Dynamiquement remplir les entrées avec JavaScript

Ceci est mon script:

<script> 
function getUserData() { 
     FB.api('/me?fields=first_name,last_name,email,location', function(response) { 
       var imie = document.getElementById('basketInputName'); 
       if(!imie || !imie.value) 
        imie.value = response.first_name; 
       var nazwisko = document.getElementById('basketInputLastName'); 
        if(!nazwisko || !nazwisko.value) 
         nazwisko.value = response.last_name; 
       var email = document.getElementById('basketInputMail'); 
        if(!email || !email.value) 
         email.value = response.email; 
       var location = document.getElementById('inputCityTo'); 
        if(!location || !location.value) 
         location.value = response.location.name; 
     }); 
} 
    window.fbAsyncInit = function() { 


FB.init({ 
    appId   : '134824563795810', 
    autoLogAppEvents : true, 
    xfbml   : true, 
    version   : 'v2.10' 
}); 
FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
       //user is authorized 
       document.getElementById('loginBtn').style.display = 'none'; 
       getUserData(); 
     } else { 
       document.getElementById('logoutBtn').style.display = 'none'; 
     } 
}); 
    }; 

    (function(d, s, id){ 
var js, fjs = d.getElementsByTagName(s)[0]; 
if (d.getElementById(id)) {return;} 
js = d.createElement(s); js.id = id; 
js.src = "//connect.facebook.net/en_US/sdk.js"; 
fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

    function myFacebookLogin() { 
FB.login(function(){ 
    getUserData(); 
}, {scope: 'user_location'}); 
} 

</script> 

Et cela est par exemple input pour le premier nom:

<div class="form-group"> 
    <label for="basketInputName">Imię</label> 
    <input type="text" name="client[name]" class="form-control" id="basketInputName" required> 
</div> 

Toutes les suggestions que je fais mal?

EDIT:

Voici mes boutons de connexion/déconnexion:

<fb:login-button id="loginBtn" show-faces="false" height="200" width="200" max-rows="1" scope="email,user_location,public_profile" onclick="myFacebookLogin();">Kontynuuj przez facebook</fb:login-button> 
<fb:login-button id="logoutBtn" autologoutlink="true"></fb:login-button> 
+0

Pourriez-vous nous indiquer le code d'activation de votre compte? – UncleDave

+1

soit utiliser le bouton de connexion OU fb.login ... myFacebookLogin ne sera probablement même pas appelé, vous n'utilisez aucun rappel après la connexion. – luschn

+0

lire ceci: http://www.devils-heaven.com/facebook-javascript-sdk-login/ – luschn

Répondre

0

Comme luschn dit que si j'utilise fb login button, alors la fonction myFacebookLogin() est pas appelée. Donc ce que j'ai fait, en changeant onclick à onlogin dans mon bouton a résolu le problème.