2011-10-14 16 views
0

我知道iframe不允許被未經授權的應用程序使用,但我無法獲得display:'page'來使用FB。用戶也可以。唯一正在工作的顯示模式是彈出式。即使他們在使用Facebook登錄的其他每個網站上工作,登錄和FB.ui對話框也都被彈出式窗口攔截器阻止。即使用戶單擊調用FB.login和FB.ui函數時,彈出窗口阻止程序也會啓動。這真的很煩人。所以請幫助我。Facebook顯示:'頁面'不能與FB.ui和彈出窗口一起工作被瀏覽器阻止

<html> 
<head> 
</head> 
<body> 
<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"> 
</script> 
<script> 
function xyz() 
{ 
FB.init({ 
appId:'113381182103752', cookie:true, 
status:true, xfbml:true, oauth:true  
}); 
FB.getLoginStatus(function(response) { 
if(response.status=="connected") 
{ 
document.getElementById("status").innerHTML="User is connected"; 
} 
else if(response.status=="unknown") 
{ 
FB.login(function(response) { 
if(response.authResponse) 
{ 
var token = response.authResponse.accessToken; 
document.getElementById("tokendiv").innerHTML=token; 
} 
}); 
document.getElementById("status").innerHTML="User is logged out"; 
} 
else if(response.status=="not_authorized") 
{ 
FB.ui({ 
client_id: '113381182103752', 
method: 'oauth', 
redirect_uri: 'http://127.0.0.1:8888/test3.php', 
response_type: 'token', 
display: 'page' 
});  
document.getElementById("status").innerHTML="User is connected but app is not authorized"; 
} 
else 
{ 
document.getElementById("status").innerHTML="Error"; 
} 
}); 
} 
</script> 
<div id="tokendiv"></div> 
<div id="status"></div> 
<button onclick="xyz()">Click Here</button> 
</body> 
</html> 

回答

1

有2個問題這裏:

1)顯示: '彈出' 是強制性的方法,包括: '的OAuth' 或爲的FB.login因爲安全性(點擊劫持和網絡釣魚的JavaScript的SDK)。我建議使用FB.login來獲取權限或進行身份驗證,因爲它更方便。

2)您的彈出窗口被瀏覽器阻止,因爲FB.login深深嵌套在您的JavaScript調用堆棧中,儘管用戶啓動了。它必須由用戶發起,並嘗試重新設計代碼,以免FB.login嵌套。

+0

是的,我用FB.login替換了FB.ui,因爲就像你說的那樣更方便。我建立了一些更多的代碼,除了彈出的問題,一切都很好,所以我會嘗試修改代碼並在這裏報告。謝謝 – Badarse

+0

彈出窗口正在FB.login訂單後工作。 – Badarse

0

嘗試使用FB.login而不是FB.getLoginStatus,而不是FB.ui來處理彈出窗口。

FB.login(function(response) { 
    if (response.authResponse) { 
    // user is logged in and has permissions 
    } 
}, {scope:'email'}); 
+0

沒有運氣。它已經阻止了嵌套在FB.getLoginStatus函數中的FB.login生成的彈出窗口。也許是因爲彈出式窗口攔截器在本地主機上的頁面被黑名單,因爲它昨天沒有阻塞。但頁面怎麼樣:'顯示',爲什麼這不起作用?任何人都可以在自己的機器上測試代碼,並告訴他們是否有相同的問題? – Badarse

相關問題