Facebook连接登录问题

问题描述:

我想在我的网站上有一个连接按钮。一旦用户点击了Facebook登录按钮,弹出窗口会要求用户输入验证详细信息,父窗口将重定向或刷新页面,并且登录按钮成为注销按钮。Facebook连接登录问题

我的问题是,当用户点击弹出连接按钮时,弹出页面将重定向到我的画布页面,而不是关闭弹出窗口。

+0

请提供一些代码,所以我们可以检查发生了什么。另外,你是否为你的fb:login-button指定了一个'onlogin'属性? – jlb 2009-12-11 15:04:35

很多人都发布过这个问题,如果你已经做了一切正确的话,原因是xd_receiver文件没有被fb读取。

您需要确保您的fb连接按钮的位置,指定了该页面底部某处xd_receiver.html文件的正确路径。类似下面:

<script type="text/javascript"> 
    FB.init("your api key here", "xd_receiver.htm"); 
</script> 

它甚至更好,更容易把xd_receiver文件在您的网站的根文件夹,并与全域网址像这样指定它:

<script type="text/javascript"> 
    FB.init("your api key here", "http://www.yoursite.com/xd_receiver.htm"); 
</script> 
+0

嘿Sarfraz,你有这些问题的人都问过这个问题的清单吗?我登录后得到'this._opts.channelUrl为空'javascript错误。该网站没有重定向,但是如果手动刷新,我发现我已登录。 – sholsapp 2010-08-19 06:34:34

这里的Facebook的样品连接,登录和注销,工作得非常好, 另外,还要确保你加下您的应用程序设置你的网站URL - >网站 - >网站网址:Your Site URL

<!DOCTYPE html> 
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"> 
     <head> 
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
      <title>Facebook Connect Sample</title> 
     </head> 
     <body> 
      <div id="fb-root"></div> 
      <script> 
      window.fbAsyncInit = function() { 
       FB.init({ 
        appId : 'YOUR APP ID', 
        status : true, // check login status 
        cookie : true, // enable cookies to allow the server to access the session 
        xfbml : true // parse XFBML 
       }); 

      /* All the events registered */ 
      FB.Event.subscribe('auth.login', function(response) { 
       // do something on login 
       login(); 
      }); 
      FB.Event.subscribe('auth.logout', function(response) { 
       // do something on logout 
       logout(); 
      }); 

      FB.getLoginStatus(function(response) { 
       if (response.session) { 
        // logged in and connected user, someone you know 
        login(); 
       } 
      }); 
     }; 

     /* Loading the JS SDK Asynchronously - Refer: https://developers.facebook.com/docs/reference/javascript/ */ 
     (function() { 
     var e = document.createElement('script'); 
     e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
     e.async = true; 
     document.getElementById('fb-root').appendChild(e); 
     }()); 

    function login(){ 
     window.location = "http://google.com"; // Redirect to Another Page. 

     /* Show User's Name 
     FB.api('/me', function(response) { 
      document.getElementById('login').style.display = "block"; 
      document.getElementById('login').innerHTML = response.name + " succsessfully logged in!"; 
     }); 
     */ 
    } 
    function logout(){ 
     document.getElementById('login').style.display = "none"; 
    } 
    </script> 
    <p><fb:login-button autologoutlink="true"></fb:login-button></p> 
     <div id="login" style ="display:none"></div> 
</body> 
</html>