2012-08-10 395 views
2

我做了http://csharpsdk.org/docs/web/getting-started的例子,它的工作原理。
但JavaScript不斷執行,所以他經常在服務器上做一個帖子..
總是調用處理程序重定向到About.aspx和代碼隱藏讀取名稱,ID和其他用戶信息。無限刷新 - Facebook C#SDK入門

form.setAttribute(「action」,'/FacebookLogin.ashx');

在我的母版我有< DIV ID =「FB-根」>和標籤<體之後的腳本代碼>(體內)。
並在我的Default.aspx我有按鈕登錄。

你能幫我嗎?

+0

你解決了這個問題嗎?我擁有相同的內容,並且與Chrome或IIS Cookie無關。 – 2012-08-14 16:56:40

+0

同樣的問題在這裏,從ashx重新引導並且腳本一遍又一遍地運行,無限循環 - 任何可以解決這個問題而無需sessionvars的建議? – 2013-01-11 14:48:43

回答

0

改變你的AppId實際的Facebook應用程序ID,您獲得一次您註冊應用

FB.init({ 
    appId  : 'YOUR_APP_ID', // App ID 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    xfbml  : true // parse XFBML 
}); 

//應該解決烏爾問題

+0

?當然我做到了 - '問題是因爲JavaScript無限調用了這個!所以他不斷地將我的頁面重定向到我的處理程序中。{FB_Event.subscribe('auth.authResponseChange',function(response){if。(response.status ==='connected')........) – oteal 2012-08-14 15:31:02

0

在另一個演示here一些人說,這是一個ie9/chrome和本地主機上的cookie存在問題。指向127.0.0.1並在iis上運行它解決了我的問題。

+0

Point to 127.0.0.1是什麼意思?我也在IIS中使用它... – oteal 2012-08-14 15:38:22

+0

而不是瀏覽到http:// localhost/MyApp,只需瀏覽到http://127.0.0.1/MyApp 127.0.0.1是一個環回地址,只是指向本地主機,但沒有在IE9和Chrome的特殊處理餅乾 – Ryan 2012-08-14 15:58:20

2

我有同樣的問題,以及從下面的例子中,我的問題竟然是,關於我的FacebookLogin.ashx處理程序頁面,我被重定向回到我原來的aspx頁面,其中包含我的JavaScript代碼。在輸入此代碼後,JavaScript再次執行我的身份驗證,因此將我置於無限循環中。

我最終做的是抓取一些JavaScript的副本,它爲您提供來自here的JavaScript中的永久性會話變量。併爲提交帖子的代碼添加條件。這樣我只擊中了FacebookLogin.ashx處理程序一次,不會讓我陷入循環。

這裏是我使用的代碼:

  FB.Event.subscribe('auth.authResponseChange', function (response) { 
      if (response.status === 'connected') { 
       // the user is logged in and has authenticated your 
       // app, and response.authResponse supplies 
       // the user's ID, a valid access token, a signed 
       // request, and the time the access token 
       // and signed request each expire 
       var uid = response.authResponse.userID; 
       var accessToken = response.authResponse.accessToken; 

       if (sessvars.fbauthenticated == undefined) { 
        sessvars.fbauthenticated = "1"; 

        // Do a post to the server to finish the logon 
        // This is a form post since we don't want to use AJAX 
        var form = document.createElement("form"); 
        form.setAttribute("method", 'post'); 
        form.setAttribute("action", '/FacebookLogin.ashx'); 

        var field = document.createElement("input"); 
        field.setAttribute("type", "hidden"); 
        field.setAttribute("name", 'accessToken'); 
        field.setAttribute("value", accessToken); 
        form.appendChild(field); 

        document.body.appendChild(form); 
        form.submit(); 
       } 

      } else if (response.status === 'not_authorized') { 
       // the user is logged in to Facebook, 
       // but has not authenticated your app 
      } else { 
       // the user isn't logged in to Facebook. 
      } 
     }); 

條件行,如果(sessvars.fbauthenticated ==未定義){保持我的代碼可以發佈多次到服務器。

希望這可以幫助

+0

輝煌,這正是我需要的。 – DNKROZ 2014-02-16 11:20:39