1

Я установил кнопку «login with google» с аутентификацией на стороне сервера. Все работает в Chrome, FIrefox, Safari. В IE 11/Edge открывается окно входа в систему Google, логин верен, но когда всплывающее окно закрывается, ничего не происходит. Функция обратного вызова никогда не вызывается. Ничего в консоли. Я думаю, что та же проблема Google Sign-in in Internet Explorer/Edge В моем случае, как и в этом другом потоке, код такой же из примеров Google.Войти с помощью кнопки google в Internet Explorer 11/Edge

<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> 
+0

Возможный дубликат [Google Вход для веб-приложения не работает с Internet Explorer] (http://stackoverflow.com/questions/31494204/google-sign-in-for-web-apps-not-working -с-интернет-исследователь) – bummi

ответ

2

К сожалению, для этого пока нет известной резолюции. После небольшого поиска я нашел много сообщений с одинаковой точной проблемой. Похоже, что некоторые разработчики попытались открыть дело с Google, чтобы узнать, могут ли они решить проблему.

Basic Google Sign-In for Websites code not working in Internet Explorer 11

Я лично попробовал несколько различных вариантов, включая публикацию сайта в прямом URL (не локальный хост) и ссылки platform.js локально. Ничего не получилось. У меня была такая же точная проблема, как вы описываете.

Я бы порекомендовал попробовать открыть билет на проблемы с Google, а также с Microsoft и, надеюсь, из этого получилось разрешение!

0

Обнаружено обходное решение: api Google Plus, похоже, все еще работает в IE. Я обнаруживаю браузер, и с IE я использую API Plus, а другие браузеры 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 
} 
?> 
Смежные вопросы