0

これが私のログイン/登録フローの設定方法です。index.htmlページにリンクがあります。クリックすると2番目のページに移動し、ログインステータスがチェックされ、登録またはログインしていない場合はfbログイン/登録ボックスが表示されます。私が行ったことにより、タグはページ上で非表示になります。ログイン状態を確認した後?チェックしたら、ユーザーがログインまたは登録されていない場合に表示されるようにしたいのですが、表示されません。ログインステータスがチェックされるまで、登録/ログインボックスの表示を非表示にする最良の方法は何ですか。ポップアップウィンドウが必要ないため、Facebookのlogin()関数を使用したくありません。XFBMLタグを使用したい。以下は私のコードです:

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

1 に答える 1

0

これは私のために働いた解決策でした。代わりに登録プラグインを使用することにしました。iframeをdivに配置し、divの可視性を「非表示」に設定してから、ログインステータスをチェックするinitコードで、document.getElementById()。style.visibility="visible"を使用して取得する関数を呼び出します。 divとその可視性を変更します。引用符が必要なものすべてに引用符が含まれていることを確認してください。これは私の最初の間違いの1つでした。

<!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>
于 2013-03-09T21:42:04.257 に答える