我目前正在開發一個Facebook應用程序(這不是我的第一個),我遇到了一些問題或很多問題。Facebook身份驗證對話框(JS)沒有顯示在IE和Chrome
index.php文件包含基於$ _GET ['page']變量的內容。 (例如'step1','step2')。
在'step2'上,有一個上傳視頻的窗體。該字段有一個onChange()事件,它觸發了這段代碼:
function submitForm() {
console.log('submitting...');
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 + '.');
jQuery('#fuserid').val(response.id);
jQuery('#uploadForm').submit();
jQuery('.formContent').hide();
jQuery('.loader').show();
});
} else {
console.log('User cancelled login or did not fully authorize.');
window.location = "index.php?page=contest&error=not_authenticated&signed_request=" + "<?php echo $_REQUEST['signed_request']; ?>"
}
}, {scope: 'email,user_birthday,publish_stream,user_likes'});
}
在Firefox中,它的工作原理與它應該完全相同。 在任何Internet Explorer版本中,Facebook驗證彈出窗口不會打開,也不會提交表單或任何內容。 除了開發人員工具[來自IE的開發人員工具]被激活並打開時 - 在這種情況下,所有工作都在IE中運行。
Chrome是simliar,有時會彈出是不開放的,我得到了以下錯誤消息:
> Unsafe JavaScript attempt to access frame with URL
> https://www.facebook.com/dialog/permissions.request from frame with
> URL
> http://mydomain.at/myapp/index.php?page=contest&signed_request=XXXX
我做了一些研究,並研究告訴我,$ channelUrl應該可以解決這個問題。 下面是從我fb.init代碼:
<div id="fb-root"></div>
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1&appId=<?php echo $appID; ?>";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId : '<?php echo $appID; ?>', // App ID
channelUrl : 'http://mydomain.at/myapp/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
oauth : true, // enable OAuth 2.0
xfbml : true // parse XFBML
});
// Additional initialization code here
window.setTimeout(function() {
FB.Canvas.setAutoResize();
}, 150);
};
</script>
爲什麼不工作在IE這個身份認證,彈出,並在Chrome只是有時工作? 爲什麼開發人員工具會改變IE的行爲以至於一切正常?
嘿,非常感謝你...這解決了我的問題,即... console.log:/ 現在我測試了它在Safari(Windows)PopUp沒有出現在Safari ..爲什麼? – RKAN07 2012-01-19 09:50:25
如果我使用onclick事件,它也可以在safari中使用,但是我需要使用onchange(檢查權限ob文件選擇)事件:) – RKAN07 2012-01-19 10:30:39