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