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

您需要在“fb-login-button”上触发操作来调用 FB.login()。您可以使用 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";
         }
      });
    };

后期编辑:我已在帖子的第二部分中将“响应”添加到 auth-subscribe 的参数中。

于 2012-05-12T11:05:39.890 回答
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

好的,问题是由apps.facebook.com/koreplayer/的iFrame引起的,IE不保存cookie,因为d在一个框架中。这是 IE 的一项安全功能,可防止欺诈。

于 2012-05-18T19:24:15.617 回答