我正在爲一個簡單的Facebook應用程序登錄。我能夠使用JavaScript SDK成功地呈現登錄/擴展權限在一個彈出窗口,其中的FB.login或下面的代碼對話框:FB.ui({method:'auth.login'...)如何做顯示:'iframe'而不是'popup'?
FB.ui({ method: 'auth.login',
perms: 'read_stream,publish_stream',
display: 'popup' },
function (rsp) {
fg_log('on login');
if(rsp.session) {
if(rsp.perms) {
fg_log('PERMS: ',rsp.perms);
} else {
fg_log('Hmm. No permissions');
}
} else {
fg_log('Hmm. No login');
}
}
);
問題是...我不喜歡彈出窗口很多。從用戶界面的角度來看,我認爲他們感覺不到,就像他們不屬於應用程序的其他部分。讓他們通過JavaScript顯示也需要額外點擊來自用戶的無緣無故 - 爲了解決彈出窗口阻止程序,用戶必須點擊類似登錄按鈕的東西(主要是毫無意義的,因爲到了應用程序知道它需要顯示登錄按鈕,它已經知道用戶需要登錄,並且可能只是提供權限對話框)。
所以,我想,爲什麼不是一個iframe呢?彈出式窗口攔截器沒有問題,很好地嵌入在頁面中,Facebook似乎愛上他們。
在最近的(2.1.2)JavaScript SDK源代碼和Facebook開發人員論壇上的各種其他帖子中的一點點挖掘似乎表明,可以將「display:'iframe'」作爲FB.ui的選項的一部分。
但是當我嘗試它,雖然IFRAME不上來,而不是獲取權限對話框中,我得到:
「與後來的請重試時發生錯誤。」
(注:再次嘗試後產生相同的結果。)
是有沒有竅門得到這個工作,或者是禁止某些原因?
這不是一個真正的答案......但我已經看到了不同的行爲,其中Facebook有時會顯示一個,有時顯示另一個,取決於我無法控制的幾件事情。 – philfreo 2010-11-30 08:02:01