0

Вот как я установил свой логин/регистрационный поток. На странице index.html есть ссылка. После нажатия на нее вы отправитесь на вторую страницу, на которой указан ваш статус входа в систему, и поле регистрации/регистрации fb отображается, если вы не зарегистрированы или не вошли в систему. То, что я сделал, сделало тэг невидимым на странице пока не будет проверен статус входа в систему? Как только он будет установлен, я хочу, чтобы он стал видимым, если пользователь не зарегистрирован или не зарегистрирован, но он не становится видимым. Каков наилучший способ скрыть видимость регистра/логина до тех пор, пока не будет проверен статус входа. Я не хочу использовать функцию facebook login(), потому что мне не нужно всплывающее окно. Я хочу использовать тег XFBML. Ниже мой код:Как изменить fb: видимость метки регистрации изнутри getLoginStatus()

<!DOCTYPE html> 
<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 
    <script > 
    <base href="http://spilot.koding.com/"> 


    </script> 
</head> 
<body> 
<div id="fb-root"></div> 
<script> 


    // Additional JS functions here 
window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '3967205****88', // App ID 
     channelUrl : '//http://spilot.koding.com/channel.html', // Channel File 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     xfbml  : true // parse XFBML 
    }); 


    // get login status 

FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
    // connected 
    } else if (response.status === 'not_authorized') { 
    // not_authorized 


     document.getElementByName("login").style.visibility = visible; 

    } else { 
    // not_logged_in 

     document.getElementByName("login").style.visibility = visible; 

    } 
}); 
    }; 



    // Load the SDK Asynchronously 
    (function(d){ 
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 
    }(document)); 



</script> 


<div id="fb-root" name="login" style="visibility:hidden"> 
<script src="https://connect.facebook.net/en_US/all.js#appId=396720557089188&xfbml=1"></script> 

<fb:registration 
    fields="name,birthday,gender,location,email" 
    redirect-uri="http://spilot.koding.com/signedRequest.php" width="530"> 
</fb:registration> 
</div> 

</body> 
</html> 
+0

Где находится ваш тег закрытия для 'fb-root'. Также почему бы не обернуть еще один div вокруг тега 'fb: registration' и показать/скрыть его? –

ответ

0

Это было решение, которое сработало для меня. Вместо этого я решил использовать плагин регистрации. Я помещаю iframe в div и устанавливаю видимость div на «скрытый», а затем в коде инициализации, где он проверяет состояние входа в систему, я вызываю функцию, которая использует document.getElementById(). Style.visibility = «visible» для захвата div и изменить его видимость. Убедитесь, что все, что нуждается в котировках вокруг него, имеет их, это была одна из моих первоначальных ошибок.

<!DOCTYPE html> 
<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 
    <script > 
    <base href="http://spilot.koding.com/"> 


    </script> 
</head> 
<body> 
<div id="fb-root"></div> 
<script> 


    // Additional JS functions here 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '396720557******', // App ID 
     channelUrl : '//http://spilot.koding.com/channel.html', // Channel File 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     xfbml  : true // parse XFBML 
    }); 

    // Additional init code here 
    FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
    // connected 

    } else if (response.status === 'not_authorized') { 
    // not_authorized 
    ///log function will change div visibility to "visible" 
    log(); 

    } else { 
    // not_logged_in 
    log(); 

    } 
});//closes fb.getLoginStatus 
    };// closes fbAsyncInit 


    // Load the SDK Asynchronously 
    (function(d){ 
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 
    }(document)); 

    //change div visibility to visible 

    var log = function(){ 
    document.getElementById('login').style.visibility = "visible"; 


    }//closes function log() 
</script> 

//put iframe inside a div and set the div's visibility to hidden. 

<div id ="login" style = "visibility:hidden" > 
<iframe src="https://www.facebook.com/plugins/registration? 
      client_id=396720557089188&& 
      redirect_uri=http://spilot.koding.com/signedRequest.php& 
      fields=name,birthday,gender,location,email" 
     scrolling="auto" 
     frameborder="no" 
     style="border:none" 
     allowTransparency="true" 
     width="100%" 
     height="330"> 
</iframe> 

    </div> 





</body> 
</html>