Подтвердить что ты не робот

Вход в Google для веб-приложений, не работающих с Internet Explorer

Используя образец быстрого запуска, предоставленный Google, я смог получить Вход для веб-приложений для работы в Chrome и Firefox. Однако он не работает в Internet Explorer (версия 11.). Он будет регистрировать пользователя в Google, но вызов data-onsuccess никогда не вызывается. И, как правило, нет никаких уведомлений об ошибках.

Я прочитал связанный вопрос и попробовал предложения по доверенным сайтам. Я также экспериментировал с настройкой, когда IE принимает сторонние файлы cookie, но ничто из этого не работает.

Код тестовой страницы, которую я использую, ниже (минус идентификатор клиента)

<html>
<head>
<meta charset="ISO-8859-1">
<title>Google Sign In</title>
<script src="https://apis.google.com/js/platform.js" async defer></script>
<meta name="google-signin-client_id" content="CLIENT_ID_FROM_GOOGLE_HERE">
<script>

function onSignIn(googleUser) {
    var profile = googleUser.getBasicProfile();
    console.log('ID: ' + profile.getId());
    console.log('Name: ' + profile.getName());
    console.log('Image URL: ' + profile.getImageUrl());
    console.log('Email: ' + profile.getEmail());
}

function signOut() {
    console.log(document);

    var auth2 = gapi.auth2.getAuthInstance();
    auth2.signOut().then(function () {
        console.log('User signed out.');
    });
}
</script>
</head>

<body>
<h1>Login</h1>
<p>
This is a simple page to test Google Sign In IE
</p>

<div class="g-signin2" data-onsuccess="onSignIn">
   Sign In Button Rendered Here
</div>

<div>
    <a href="#" onclick="signOut();">Sign out</a>
</div>
</body>
</html>

Я также пробовал это с помощью кода, который использует слушатели для прослушивания изменений, как это предложено некоторыми ответами. Я тоже не имел успеха в этом подходе. Снова работает в Chrome/Firefox, но не в IE.

Каждый раз так часто (не все время) я вижу сообщение об ошибке "SCRIPT5: Access is denied" в консоли. Не совсем понятно, почему, но я замечаю, что, когда страница в конечном итоге загружена, некоторые из кода Google находятся в <iframe>, и мне интересно, является ли это частью проблемы.

Я размещаю приведенную выше тестовую страницу в локальном экземпляре Apache (работает в Windows), и мне интересно, есть ли проблемы с перекрестным доменом, возможно, с кодом в <iframe>, поступающим из Google.

Я нахожусь в полной утрате на минуту, и я очень хочу знать, удалось ли кому-то заставить это работать с IE. Есть ли какая-то конфигурация, необходимая для IE, чтобы это работало? Существуют ли изменения кода, необходимые для его работы? Или это просто неработоспособно в IE?

Альтернативный вариант, который я могу попробовать, это серверный поток, но я не уверен, что это позволит избежать проблемы, и в идеале я хотел бы использовать подход на стороне клиента.

Любая обратная связь приветствуется. Спасибо.

Изменить: я разместил простую страницу, которая иллюстрирует проблему. Эта страница работает в Chrome, Firefox и Safari. Но сбой при использовании IE (v11).

4b9b3361

Ответ 1

Команда Google Identity исправила это в ноябре. Если вы продолжаете видеть проблемы в демонстрации JavaScript размещенной в GitHub, отчет и выпуск.

Вы можете проверить следующие демонстрации, чтобы увидеть пример работы Edge/IE11:

Ответ 2

Я использовал вход, и это сработало для меня.

введите описание изображения здесь

Вот моя версия IE:

введите описание изображения здесь

Ответ 3

Попробуйте загрузить скрипты из другого места, кроме Google. В соответствии с этим вопросом (Предотвращение "SCRIPT5: доступ запрещен" ошибка в IE), что ошибка "SCRIPT5: доступ запрещен." - это способ, которым должна быть защищена 'пользователь против XSS.

Итак, попробуйте загрузить https://apis.google.com/js/platform.js и использовать его вместо своего локального сервера.

Ответ 4

Были ли какие-либо новые идеи по этой проблеме? Я также вижу ту же проблему при попытке использовать методы g-signin2. Я использую старый s-gignin без проблем прямо сейчас во всех браузерах.

Как ни странно, это работает для меня в браузере IE10, но не в IE11 или Edge

Ответ 5

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