2017-08-31 5 views
0

Ich benutze Facebook API, um Benutzer Vorname und Nachname, E-Mail und Stadt. Alles funktioniert gut, aber Füllung inputs. Meine script füllen Eingaben, aber nur wenn ich Seite neu lade. Ich muss Eingaben nach dem Drücken von login button füllen, ohne Seite zu aktualisieren. Ist das möglich?Dynamisch Eingänge mit JavaScript füllen

Das ist mein Skript:

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

Und das ist zum Beispiel input für den Vornamen:

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

Irgendwelche Vorschläge, was ich falsch mache?

EDIT:

Dies ist mein Login/Logout-Buttons:

<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

Können Sie uns den Code für Ihre Login-Schaltfläche zeigen? – UncleDave

+1

verwenden Sie entweder die Login-Schaltfläche ODER fb.login ... myFacebookLogin wird höchstwahrscheinlich nicht einmal angerufen, Sie verwenden keinen Rückruf nach der Anmeldung. – luschn

+0

lies das: http://www.devils-heaven.com/facebook-javascript-sdk-login/ – luschn

Antwort

0

Wie luschn sagte, wenn ich fb login button bin mit, dann myFacebookLogin() Funktion wird nicht aufgerufen. Also, was ich tat, änderte onclick zu onlogin in meinem Knopf löste das Problem.

Verwandte Themen