2

我想獲得我正在製作的Facebook應用程序的權限,但每次我嘗試在IE8中運行應用程序時,我都無法獲得顯示的權限框。我已經在Firefox中測試了應用程序,它可以正常打開,並獲得所有權限(我不要求任何特殊的權限)。在IE中的Facebook權限造成無限的Facebook循環

當我在IE8中運行調試器時,我發現一旦程序命中FB.getLoginStatus(function (response) {(請參閱下面的代碼),它會進入由Facebook編寫的無限代碼循環。

我認爲這個問題是因爲我如何進行權限調用。我有一個表單用於登錄,一旦用戶嘗試登錄到該網站,將調用權限方法。下面是我用表格的形式和按鈕:

<form id = "membershipInfo" method = "post" action = "Login.aspx"> 
<input type = "button" id = "submitInfo" class = "MemberInfo" value = "Take Me There!" onclick = "authorize(acceptPermissions, rejectPermissions)"/> 

這裏是身份驗證方法,我用:

function authorize(successCallback, failureCallback) { 
FB.getLoginStatus(function (response) { 
    //****** DOES NOT MAKE IT PAST HERE *******// 
    if (response.session) { 
     // logged in and connected user, carry on 
     session = response.session; 
     //Set access token 
     accessToken = response.session.access_token; 
     //Call success callback 
     successCallback(); 
    } else { 
     // no user session available, Lets ask for perms 
     FB.ui(
     { 
      method: 'permissions.request', 
      perms: permissionString //(equals "") 
     }, 
     function (response) { 
      if (response && response.session != null) { 
       //Get session 
       session = response.session; 
       //Set access token 
       accessToken = response.session.access_token; 
       //Call success callback 
       successCallback(); 
      } else { 
       //Call failure callback 
       failureCallback(); 
      } 
     }); 
    } 
}); 

當用戶接受他們得到搬進這是一個成功的回調方法權限這裏(從來沒有這樣做):

function acceptPermissions() { 
    //Code done before moving on 
    $('#submitInfo').submit(); 
} 

任何人都看到任何問題?

+0

你在Facebook的iframe中工作嗎?或您自己的網站? – ifaour 2011-04-12 21:08:04

+0

在iframe裏面 – 2011-04-12 21:11:44

+2

ok試試1)在你的頭文件中加入'P3P:CP =「HONK」'[參考](http://developers.facebook.com/docs/samples/canvas/))。如果它不工作,2)嘗試添加一個自定義通道到你的JS初始化([ref](http://developers.facebook.com/docs/reference/javascript/fb.init/)) – ifaour 2011-04-13 14:31:15

回答

0

這看起來像它應該工作給我,所以大概到文件與Facebook的bug報告的好機會....

這麼說,我想你可以使用的FB.login代替http://developers.facebook.com/docs/reference/javascript/FB.login/清理你的代碼

FB.login(function(response){ 
    if(response.session){ 
     // logged in and connected user, carry on 
     session = response.session; 
     //Set access token 
     accessToken = response.session.access_token; 
     //Call success callback 
     successCallback(); 
    } 
    else{ 
     failureCallback(); 
    } 
}, {perms: permissionString}); 
+0

FWIW,I'我剛剛開始在我的另一個應用程序中看到這種相同的行爲。錯誤提交時間! – mikedory 2011-04-12 21:20:57

0

所以,這裏有一個問題:你有Flash安裝?就像IE8一樣,IE8可能會嘗試加載基於Flash的XD,然後靜靜地失敗。如果你安裝Flash(和/或放入一個捕獲),它的工作?