2

これは私の最初のアプリです。アプリでログイン ボタンが機能しません。表示されるのですが、クリックしても何も起こりません。

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  <html xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/">
  ....
  <body>
  <div id="fb-root"></div>
  <script>
        window.fbAsyncInit = function() {
              FB.init({
              appId      : '306025322809511',
              channel    : 'http://koreplayer.fb.levelkro.com/channel.php',
              status     : true, 
              cookie     : true,
              xfbml      : true,
              oauth      : true,
              });
              FB.Event.subscribe('auth.login', function () {
                    if (response.authResponse) {
                          window.location = "/manage.php";
                    }
              });
        };
        (function(d){
        var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/fr_FR/all.js";
        d.getElementsByTagName('head')[0].appendChild(js);
        }(document));
  </script>
  ....
  <div class="fb-login-button">Se connecter en utilisant Facebook</div>

チャンネルパラメータで試してみましたが、チャンネルがないとスタイルが表示されませんでした。

4

3 に答える 3

0

OK、この問題は apps.facebook.com/koreplayer/ の iFrame が原因です。IE は Cookie を保存しません。これは、不正行為を防止するための IE のセキュリティ機能です。

于 2012-05-18T19:24:15.617 に答える
0

js sdk が読み込まれたことを確認した後、xfbml 解析を使用してボタンをレンダリングします。以下を使用します。


<div id="login_button"><div>
<div id="fb-root"></div>
<script>
      window.fbAsyncInit = function() {
        FB.init({
    appId  : '135669679827333',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true, // parse XFBML
    channelUrl : 'https://anotherfeed.com/emo/channel.html', // channel.html file
    oauth  : true // enable OAuth 2.0
        });  
function loginbutton(){
var loginb=document.getElementById('login_button');
login.innerHTML+='<div class="fb-login-button">Se connecter en utilisant Facebook</div>';
FB.XFBML.parse(loginb);
};
setTimeout("loginbutton();", 2000);
      };
  // Load the SDK Asynchronously
(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/all.js#xfbml=1&appId=135669679827333";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>

注: これはログイン リンクのみをレンダリングします。

于 2012-05-14T18:35:32.750 に答える
0

FB.login() を呼び出すには、「fb-login-button」でトリガー アクションが必要です。onclick() または jQuery $('.fb-login-button').click( function() { FB.login(); }); を使用してこれを行うことができます。

また、以下の問題は、ポップアップのログインを証明しませんが、ログイン後の更新を停止します。そのため、すでにログインしている場合は、ログイン ボックスが開くだけで何も起こらないように見えます。関係ないので閉じます。

          FB.Event.subscribe('auth.login', function () { 
                if (response.authResponse) { 
                      window.location = "/manage.php"; 
                } 
          }); 

に変更する必要があります

          FB.Event.subscribe('auth.login', function (response) { 
                if (response.authResponse) { 
                      window.location = "/manage.php"; 
                } 
          }); 

最後に、windows.location には完全な URL (http:// または https:// で始まる) を指定するのが理想的です。する必要はありませんが、より良く機能させるために必要です。


以下のコメントの後に編集:

    window.fbAsyncInit = function() {
      FB.init({
        appId      : '306025322809511',
        channel    : 'http://koreplayer.fb.levelkro.com/channel.php',
        status     : true, 
        cookie     : true,
        xfbml      : true,
        oauth      : true,
      });
    };
    FB.Event.subscribe('auth.login', function (response) {
    if (response.authResponse) {
      window.location = "http://koreplayer.fb.levelkro.com/manage.php";
      }
    });

fbAsyncInit 関数内で FB.Event をサブスクライブする必要があります。

window.fbAsyncInit = function() {
      FB.init({
        appId      : '306025322809511',
        channel    : 'http://koreplayer.fb.levelkro.com/channel.php',
        status     : true, 
        cookie     : true,
        xfbml      : true,
        oauth      : true,
      });
      FB.Event.subscribe('auth.login', function (response) {
        if (response.authResponse) {
          window.location = "http://koreplayer.fb.levelkro.com/manage.php";
         }
      });
    };

編集が遅れました: 投稿の 2 番目の部分で、auth-subscribe のパラメーターに「応答」を追加しました。

于 2012-05-12T11:05:39.890 に答える