5

下面將登錄事件綁定到一個div。如果我點擊它,我會得到預期的js sdk登錄彈出窗口。然而,在提交彈出式憑證後,彈出窗口會變成白色並且不會關閉。如果我刷新頁面,我已登錄,但不會像您預期的那樣自動刷新。任何人有任何想法?Facebook的JS SDK - 登錄彈出不關閉


編輯:相同的代碼(使用差異應用程序ID和域憑據)可以在不同的服務器上工作。這使我相信我的問題可能與下面的代碼無關。是否有任何應用程序或服務器配置,可能導​​致登錄彈出失敗關閉/更新?


<!DOCTYPE html> 
<html class="no-js ie ie10plus" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> 
    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object#"> 
     <script src="http://ajax.aspnetcdn.com/ajax/modernizr/modernizr-2.0.6-development-only.js"></script> 
    </head> 
    <body> 
     <div id="fb-root"></div> 
     <div id="fbLogin">Test login link</div> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" ></script> 
     <script>    
       var fbmm = {}; 

       window.fbAsyncInit = function() { 
       FB.init({ 
        appId  : '339910146083688', // App ID 
        cookie: true, 
        xfbml: true, 
        status: true, 
        oauth: true 
       }); 

       $(document).ready(function(){ 
        $("#fbLogin").click(function(){ 
         console.log('test'); 
         FB.login(function(response) { 
          if (response.authResponse) { 
          console.log('Welcome! Fetching your information.... '); 
          FB.api('/me', function(response) { 
           console.log('Good to see you, ' + response.name + '.'); 
          }); 
          } else { 
          console.log('User cancelled login or did not fully authorize.'); 
          } 
         }); 
        }); 
       }); 

       }; 

      (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> 
    </body> 
</html> 
+0

你的代碼是好的,因爲你期望的工作。 – Philip

+0

感謝Philip。我的對話框窗口並未在8000端口上關閉,但是我未經身份驗證並登錄。我不確定,但是您可能需要退出Facebook並單擊它才能看到該錯誤。 – Matrym

+0

我登出後窗口關閉。我用我的app_id在端口80上運行它。在您的應用程序url設置中,您是否添加了帶有端口的url? – Philip

回答

5

上的其中一個(「正常」)的HTTP(S)端口超過80或443嘗試建立你的試驗機等港口進行測試時,有一些已知問題,看看問題依然存在。

+0

謝謝CBroe,我會給它一個鏡頭。 – Matrym

+0

確實是這個問題。謝謝一堆:) – Matrym

0

我的猜測是,發生的問題,因爲你不提供頻道網址,如documentation (under the Channel Url section)提到:

頻道文件解決了在某些瀏覽器跨域通信 一些問題。
...
channelUrl參數是可選的,但推薦使用 。

即使您的問題沒有在這三個問題的渠道文件解決了上市,我經歷了同樣的問題,因爲你曾經和添加頻道解決了這個問題,雖然這是前一陣子,所以我不100 % 一樣的。
這說明有如何創建頻道文件,你需要改變你的JavaScript只是有點:

FB.init({ 
    appId: '339910146083688', // App ID 
    cookie: true, 
    xfbml: true, 
    status: true, 
    oauth: true, 
    channelUrl: YOUR_CHANNEL_URL 
}); 
+0

謝謝Nitzan,這也是我的猜測之一。我試着把一個頻道文件放進去,但沒有奏效。 – Matrym

+0

只要確保通道是由完全相同的域(包括端口)提供服務的,也會發現有2個可能相關的錯誤報告。 [Fb登錄按鈕不會觸發回來,並且在成功登錄後保持掛起狀態](http://developers.facebook.com/bugs/421137377931628)也使用不同的端口,所以也許@CBroe寫的是這樣的情況,第二:[Fb .login在資源管理器7顯示空白彈出窗口並不關閉本身](http://developers.facebook.com/bugs/255683901207692)是爲IE7,所以我不知道。 –

0

您可以改爲嘗試自定義應用程序日誌,與在該身份驗證對話框中的自定義選項應用設置。在那裏你可以配置你想要的權限,如果用戶沒有登錄/授權你的應用,Facebook會自動重定向到app-auth頁面。您必須先從應用程序設置>身份驗證對話框啓用它。請參閱下圖中的點擊此處註釋。希望這可以幫助。 enter image description here

0

我在開發網站地址爲http://localhost時遇到了同樣的問題我在windows hosts文件中定義了一臺主機,它工作正常。

0

我到FB.login()一個類似的呼籲,通過改變

onclick="loginviafb()"; 

關閉對話框

onclick="loginviafb(); return false;"