Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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 使用Internet Explorer 11/Edge中的google按钮登录_Javascript_Internet Explorer_Microsoft Edge_Google Login - Fatal编程技术网

Javascript 使用Internet Explorer 11/Edge中的google按钮登录

Javascript 使用Internet Explorer 11/Edge中的google按钮登录,javascript,internet-explorer,microsoft-edge,google-login,Javascript,Internet Explorer,Microsoft Edge,Google Login,我设置了带有服务器端身份验证的“谷歌登录”按钮。在Chrome、FIrefox和Safari中,一切都可以正常工作。在IE 11/Edge中,Google登录窗口打开,登录正确,但当弹出窗口关闭时,不会发生任何事情。永远不会调用回调函数。控制台中没有任何内容。 我认为这是同样的问题 在我的例子中,就像在另一个线程中一样,代码与google示例相同 <script type="text/javascript"> function signInCallback(authRes

我设置了带有服务器端身份验证的“谷歌登录”按钮。在Chrome、FIrefox和Safari中,一切都可以正常工作。在IE 11/Edge中,Google登录窗口打开,登录正确,但当弹出窗口关闭时,不会发生任何事情。永远不会调用回调函数。控制台中没有任何内容。 我认为这是同样的问题 在我的例子中,就像在另一个线程中一样,代码与google示例相同

<script type="text/javascript">


    function signInCallback(authResult){

        if (authResult['code']) {
            $('#login_social').html("");
            setLoading($('#login_social'),'relative');
            $.ajax({
                url:'gp_ajax_server_login?state=d77e966cf2e830268a4223543a853dd9',
                type: 'POST',
                contentType: 'application/octet-stream; charset=utf-8',
                success: function(response){
                    if(response == "OK"){
                            displayLoggedUser();
                    }else if(response == "CL"){
                            window.location.href = "/snkt/";
                    }
                },
                data: authResult['code'],
                processData: false
            });

        }else{
            console.log("GOOGLE SIGN-IN ERROR");
        }
    }

    function startAndRender(){
        gapi.load('auth2', function() {
            auth2 = gapi.auth2.init(
                {client_id:'XXXXXXXXX.apps.googleusercontent.com'}
            );
        });
    }

</script>
<script src="https://apis.google.com/js/client:platform.js?onload=startAndRender" async defer></script>

<center>
<button id="signinButton"  class="g-signin-btn"></button>
<script>
    $('#signinButton').click(function(){
        auth2.grantOfflineAccess({'redirect_uri':'postmessage'}).then(signInCallback);
    });
</script>
</center>

函数signInCallback(authResult){
if(authResult['code']){
$('#login_social').html(“”);
设置加载($('login'u social'),'relative');
$.ajax({
url:'gp_ajax_服务器_登录?状态=d77e966cf2e830268a4223543a853dd9',
键入:“POST”,
contentType:'应用程序/八位字节流;字符集=utf-8',
成功:功能(响应){
如果(响应=“确定”){
displayLoggedUser();
}否则如果(响应=“CL”){
window.location.href=“/snkt/”;
}
},
数据:authResult['code'],
processData:false
});
}否则{
log(“谷歌登录错误”);
}
}
函数startAndRender(){
load('auth2',function(){
auth2=gapi.auth2.init(
{client_id:'XXXXXXXXX.apps.googleusercontent.com'}
);
});
}
$(“#登录按钮”)。单击(函数(){
auth2.grantoflineaccess({'redirect_uri':'postmessage'});
});

不幸的是,目前还没有一个已知的解决方案。经过一点搜索,我发现许多帖子都有相同的问题。看起来,一些开发者试图与谷歌展开一场官司,看看他们是否能够解决这个问题

我个人尝试了几个不同的变体,包括将站点发布到一个实时URL(而不是本地主机)和在本地引用platform.js。什么都没用。我的问题和你描述的完全一样


我建议你试着和谷歌以及微软一起开一张麻烦单,希望能从中找到解决办法

我找到了一个解决办法:Google Plus api似乎仍在IE中运行。 我检测浏览器,IE使用Plus API,其他浏览器使用Google API。至少在问题解决之前。 我希望这能帮助一些人

<?php
//***************** IE
if (preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) || (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident/7.0; rv:11.0') !== false)|| (strpos($_SERVER['HTTP_USER_AGENT'], 'Edge/12') !== false)){
?>
<script type="text/javascript">

    (function () {
      var po = document.createElement('script');
      po.type = 'text/javascript';
      po.async = true;
      po.src = 'https://plus.google.com/js/client:plusone.js?onload=start';
      var s = document.getElementsByTagName('script')[0];
      s.parentNode.insertBefore(po, s);
    })();

    function signInCallback(authResult) {
        if (authResult['code']) {

            $('#login_social').html("");
            setLoading($('#login_social'),'relative');
            $.ajax({
                url:'gp_ajax_server_login?state=<?php echo $state?>',
                type: 'POST',
                contentType: 'application/octet-stream; charset=utf-8',
                success: function(response){
                    if(response == "OK"){
                        displayLoggedUser();
                    }else if(response == "CL"){
                        window.location.href = "/snkt/";
                    }
                },
                data: authResult['code'],
                processData: false
            });

        } else if(authResult['error']) {
            console.log("GOOGLE SIGN-IN ERROR: "+authResult['error']);
        }
        }

</script>

    <div id="signinButton">
      <span class="g-signin"
        data-scope="https://www.googleapis.com/auth/plus.login email"
        data-clientid="XXXXXXXXXXXXX.apps.googleusercontent.com"
        data-redirecturi="postmessage"
        data-accesstype="offline"
        data-cookiepolicy="single_host_origin"
        data-callback="signInCallback"
        data-width="wide"
        data-height="tall"
        data-approvalprompt="auto">
      </span>
    </div>
<div id="result"></div>


<?php
// ********** OTHER BROWSERS
} else {
?>
<script type="text/javascript">


    function signInCallback(authResult) {

    if (authResult['code']) {
        $('#login_social').html("");
        setLoading($('#login_social'),'relative');
        $.ajax({
            url:'gp_ajax_server_login?state=d77e966cf2e830268a4223543a853dd9',
            type: 'POST',
            contentType: 'application/octet-stream; charset=utf-8',
            success: function(response){
                if(response == "OK"){
                        displayLoggedUser();
                }else if(response == "CL"){
                        window.location.href = "/snkt/";
                }
            },
            data: authResult['code'],
            processData: false
        });

        }else{
        console.log("GOOGLE SIGN-IN ERROR");
        }
    }

    function startAndRender() {
    gapi.load('auth2', function() {
        auth2 = gapi.auth2.init(
            {client_id:'XXXXXXXXX.apps.googleusercontent.com'}
        );
    });
    }

</script>
<script src="https://apis.google.com/js/client:platform.js?   onload=startAndRender" async defer></script>

<center>
<button id="signinButton"  class="g-signin-btn"></button>
<script>
    $('#signinButton').click(function() {
       auth2.grantOfflineAccess({'redirect_uri':'postmessage'}).then(signInCallback);
});
</script>
</center>
<?php
}
?>

(功能(){
var po=document.createElement('script');
po.type='text/javascript';
po.async=true;
po.src=https://plus.google.com/js/client:plusone.js?onload=start';
var s=document.getElementsByTagName('script')[0];
s、 parentNode.insertBefore(po,s);
})();
函数signInCallback(authResult){
if(authResult['code']){
$('#login_social').html(“”);
设置加载($('login'u social'),'relative');
$.ajax({
url:'gp\U ajax\U服务器\U登录?状态=',
键入:“POST”,
contentType:'应用程序/八位字节流;字符集=utf-8',
成功:功能(响应){
如果(响应=“确定”){
displayLoggedUser();
}否则如果(响应=“CL”){
window.location.href=“/snkt/”;
}
},
数据:authResult['code'],
processData:false
});
}else if(authResult['error']){
log(“谷歌登录错误:+authResult['ERROR']);
}
}
函数signInCallback(authResult){
if(authResult['code']){
$('#login_social').html(“”);
设置加载($('login'u social'),'relative');
$.ajax({
url:'gp_ajax_服务器_登录?状态=d77e966cf2e830268a4223543a853dd9',
键入:“POST”,
contentType:'应用程序/八位字节流;字符集=utf-8',
成功:功能(响应){
如果(响应=“确定”){
displayLoggedUser();
}否则如果(响应=“CL”){
window.location.href=“/snkt/”;
}
},
数据:authResult['code'],
processData:false
});
}否则{
log(“谷歌登录错误”);
}
}
函数startAndRender(){
load('auth2',function(){
auth2=gapi.auth2.init(
{client_id:'XXXXXXXXX.apps.googleusercontent.com'}
);
});
}
$(“#登录按钮”)。单击(函数(){
auth2.grantoflineaccess({'redirect_uri':'postmessage'});
});