Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器阻止Facebook登录弹出窗口_Javascript_Facebook_Facebook Javascript Sdk - Fatal编程技术网

Javascript 浏览器阻止Facebook登录弹出窗口

Javascript 浏览器阻止Facebook登录弹出窗口,javascript,facebook,facebook-javascript-sdk,Javascript,Facebook,Facebook Javascript Sdk,我对javascript非常陌生,真的不知道怎么做,Facebook登录仍然被任何浏览器中的弹出窗口拦截器阻止 我将此代码放在一个文件fbapp1.php中 <script> window.fbAsyncInit = function() { FB.init({ appId : 'myappid', // App ID channelUrl : '//example.com/fbapp1.php', // Channel File

我对javascript非常陌生,真的不知道怎么做,Facebook登录仍然被任何浏览器中的弹出窗口拦截器阻止

我将此代码放在一个文件fbapp1.php中

<script>
window.fbAsyncInit = function() {
    FB.init({
        appId      : 'myappid', // App ID
        channelUrl : '//example.com/fbapp1.php', // Channel File
        status     : true, // check login status
        cookie     : true, // enable cookies to allow the server to access the session
        xfbml      : true  // parse XFBML
    });
    // this shouldn't be called directly, but instead should be initiated with a user click event
    FB.login(function(response) {
        if (response.authResponse) {
            // document.write ('Access Token: ' + response.authResponse.accessToken);
            window.location = 'https://example.com/fbapp2.php?access_token=' + response.authResponse.accessToken;
        } else {
            alert ('User cancelled login or did not fully authorize.');
        }
    });
};
// Load the SDK Asynchronously
(function(d){
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
}(document));
</script>

window.fbAsyninit=函数(){
FB.init({
appId:'myappid',//应用程序ID
channelUrl:'//example.com/fbapp1.php',//通道文件
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
xfbml:true//解析xfbml
});
//这不应直接调用,而应通过用户单击事件启动
FB.登录(功能(响应){
if(response.authResponse){
//document.write('Access Token:'+response.authResponse.accessToken);
window.location=https://example.com/fbapp2.php?access_token='+response.authResponse.accessToken;
}否则{
警报('用户已取消登录或未完全授权');
}
});
};
//异步加载SDK
(职能(d){
var js,id='facebook jssdk',ref=d.getElementsByTagName('script')[0];
if(d.getElementById(id)){return;}
js=d.createElement('script');js.id=id;js.async=true;
js.src=“//connect.facebook.net/en_US/all.js”;
ref.parentNode.insertBefore(js,ref);
}(文件);
为了打开这个文件,我在另一个页面中使用了简单的html href代码

<a href="https://example.com/fbapp1.php" target="_blank">"Pulsa Fortune App"</a>

但Facebook登录弹出窗口总是被浏览器阻止。上面的代码已经说明了这件事,但我不知道它是什么意思

这不应该直接调用,而是应该启动 通过用户单击事件


请告诉我我的代码应该是怎样的?

不要调用
FB。在异步回调函数中登录
-
fbasyninit
是异步的。你必须在用户交互时调用它,否则浏览器会有很好的理由阻止它

例如:

document.getElementById('loginBtn').addEventListener('click', function() {
    //do the login
    FB.login(function(response) {
        if (response.authResponse) {
            //user just authorized your app
            document.getElementById('loginBtn').style.display = 'none';
            getUserData();
        }
    }, {scope: 'email,public_profile', return_scopes: true});
}, false);

来源:

不要调用
FB。在异步回调函数中登录
-
fbasyninit
是异步的。你必须在用户交互时调用它,否则浏览器会有很好的理由阻止它

例如:

document.getElementById('loginBtn').addEventListener('click', function() {
    //do the login
    FB.login(function(response) {
        if (response.authResponse) {
            //user just authorized your app
            document.getElementById('loginBtn').style.display = 'none';
            getUserData();
        }
    }, {scope: 'email,public_profile', return_scopes: true});
}, false);

来源:

只需创建一个id为“loginBtn”的div……老实说,这是一个简单的点击事件监听器,不确定还有什么要说。只需创建一个id为“loginBtn”的div……老实说,这是一个简单的点击事件监听器,不确定还有什么要说。