15

Próbuję użyć logowania Google do stron internetowych (https://developers.google.com/identity/sign-in/web/) i zauważyłem, że moje rozwiązanie nie działa w przeglądarce Internet Explorer 11. Aby spróbować wyeliminować jak najwięcej czynników, jak to możliwe, stworzyłem prosty przypadek testowy na podstawie przykładowego kodu dostarczonego przez Google.Podstawowy login Google dla kodu stron internetowych nie działa w przeglądarce Internet Explorer 11

Testowałem to w Chrome na moim komputerze z Windows 7, Chrome na moim Macu, Safari na moim Macu, Firefox na moim Macu i Safari na moim iPhonie. Działa na wszystkich (np. Po kliknięciu przycisku logowania i wybraniu/wprowadzeniu mojego konta Google wraca do strony, a na przycisku pojawia się "Zalogowany").

Nie działa jednak w przeglądarce Internet Explorer 11 na komputerze PC lub, co dziwne, na Chrome na iOS. Po kliknięciu przycisku otworzy się okno, które pozwala mi wybrać moje konto Google, ale po dokonaniu wyboru, okno zamyka się i wraca do strony za pomocą przycisku, który wciąż brzmi "Zaloguj się".

Oto przykładowy kod:

<html> 
<head> 
<meta name="google-signin-client_id" content="61023618497-vqfbod57f26ncjl9d6firk3t09ve4tt3.apps.googleusercontent.com"> 
<script src="https://apis.google.com/js/platform.js" async defer></script> 
</head> 
<body> 
<div class="g-signin2"></div> 
</body> 
</html> 

Jakieś pomysły co do tego, co może się dziać? Szukałem i nie znalazłem żadnych rozwiązań.

Jednym z pomysłów było dodanie "accounts.google.com" do zaufanych witryn IE. To nie zadziałało. Próbowałem również uzyskać dostęp do strony przez https zamiast http. To też nie miało znaczenia. Coś jeszcze powinienem spróbować?

+2

Potrzebujemy Google, aby to naprawić. Ktoś wie, jak otworzyć problem z nimi? Zaktualizowałem tagi na to pytanie i inne (http://stackoverflow.com/questions/31494204/google-sign-in-for-web-apps-not-working-with-internet-explorer) na oba te poleć (https://groups.google.com/forum/#!topic/google-federated-login-api/TL9Pxn_s7yw) – gerry3

+0

Zostało to rozwiązane w najnowszej aktualizacji logowania do Google (19 listopada 2015 r.). Strony, do których się odwołujesz, powinny teraz działać w IE11/Edge. – class

+1

Głosuję, aby zamknąć to pytanie jako niezwiązane z tematem, ponieważ został usunięty błąd związany z końcem Google. – j08691

Odpowiedz

1

Upewnij się, że nie masz skonfigurowanego IE 11 do blokowania wszystkich plików cookie stron trzecich.

Pliki cookie osób trzecich są wymagane, a wrażenia użytkownika, które występują, gdy pliki cookie stron trzecich są blokowane - jak odkryłeś - pozostawia wiele do życzenia. Użytkownik nie otrzymuje ostrzeżenia ani komunikatu o błędzie.

Możesz spróbować złapać błąd, zanim się to stanie. Możliwe jest wykrycie, czy pliki cookie stron trzecich są blokowane przez próbę ustawienia pliku cookie w drugiej domenie (którą kontrolujesz), a następnie wprowadzenie drugiego żądania w celu zapewnienia ustawienia pliku cookie. Będziesz potrzebował skryptu lub czegoś na swoim serwerze, który może ustawić i sprawdzić plik cookie (nie można tego zrobić używając tylko JavaScript z powodu modelu zabezpieczeń przeglądarki).

+2

To nie jest problem, przynajmniej ten, który widzę. W konsoli IE pojawia się błąd "SCRIPT5: Access is Denied" i dotyczy on iframe Google. Zmiana IE w celu zezwolenia na wszystkie pliki cookie (ustawienia niskiego poziomu zabezpieczeń) nie ma żadnego efektu. Dodanie witryny obsługującej, accounts.google.com itp. Do zaufanych witryn nie przynosi żadnego efektu. – razor

3

Natknąłem się na ten sam problem teraz, kilka miesięcy później.

Jeśli spojrzeć na:

https://developers.google.com/identity/sign-in/web/build-button

i próbować logować z ich przycisk demo, to nie działa z IE11 (ale działa z innymi przeglądarkami używam na innym systemie operacyjnym). Nie mogłem znaleźć żadnego rozwiązania.

Pozostawiam komentarz dla przyszłego czytelnika, który będzie poszukiwał tego samego problemu w przyszłości. Jeśli przycisk demonstracyjny w Google nie działa, może przynajmniej mieć pewność, że problem prawdopodobnie nie leży w jej kodzie. :)

1

Udało mi się wykonać następujące czynności: Ładowanie skryptu w celu rozpoczęcia renderowania przycisku Google itp. Z $ document.ready. (np. Cokolwiek masz na apis.google.com/js/client:platform.js?onload= x)

np.

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

Move StartApp(), aby tutaj:

$(document).ready(function() { 
    startApp(); 

Gdzie StartApp() wygląda mniej więcej tak:

function startApp() { 
    gapi.load('auth2', function() { 
     gapi.client.load('plus', 'v1').then(function() { 
      gapi.signin2.render('signin-button', { 
       scope: 'https://www.googleapis.com/auth/plus.login', 
       fetch_basic_profile: false 
      }); 
      gapi.auth2.init({ 
       fetch_basic_profile: false, 
       scope: 'https://www.googleapis.com/auth/plus.login' 
      }).then(
       function() { 
        console.log('init'); 
        auth2 = gapi.auth2.getAuthInstance(); 
        auth2.isSignedIn.listen(updateSignIn); 
        auth2.then(updateSignIn()); 
       }); 
     }); 
    }); 
} 
0

Walczyłem, aby uzyskać przykład pracować na localhost, ale jako wkrótce po wdrożeniu go do prawdziwego adresu URL zadziałało.

Powiązane problemy