Ошибка инициализации idpiframe в системе Google Auth API в Chrome

Я использую GSuite, и я кодирую очень простое веб-приложение для использования API Google Auth, и получаю исключение "idpiframe_initialization_failed".

Теперь у меня есть точный HTML, как показано в примере Google: https://developers.google.com/api-client-library/javascript/samples/samples

1) Я создал проект в Google Developer Console

2) Я настраиваю экран авторизации OAUTH

3) Я создал идентификатор клиента, создав ограничения и URL перенаправления

4) Я также создал API KEY

5) Наконец, я включил API-интерфейс People, поскольку службы обнаружения не выполнялись при настройке параметра discoveryDocs

Со всеми этими шагами, Когда я вызываю gapi.client.init, он вызывает исключение ТОЛЬКО в chrome, я не понимаю, почему.

Код для инициализации API:

    gapi.client.init({
        apiKey: 'MY_API_KEY',
        discoveryDocs: ["https://people.googleapis.com/$discovery/rest?version=v1"],
        clientId: 'MY_CLIENT_ID.apps.googleusercontent.com',
        scope: 'profile'
    }).then(function (response) {
      // Listen for sign-in state changes.
      gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);

      // Handle the initial sign-in state.
      updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
    },function(reason){
        console.log('onerror');
        console.log(reason);
      // Listen for sign-in state changes.
      gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);

      // Handle the initial sign-in state.
      updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());

В коде выполняется блок ошибок, а сообщение:

details: "Failed to read the 'localStorage' property from 'Window': Access is denied for this document."
error:"idpiframe_initialization_failed"

Любые идеи, почему я прихожу к этой ошибке?

Спасибо!

Ответ 1

Я столкнулся с той же проблемой. Потребовав некоторое время, нашел причину. Эта ошибка возникает из-за того, что в настройках chrome у вас включена опция блокировки сторонних файлов cookie и данных сайта.

Это можно решить, отключив эту опцию: "Чтобы найти настройки, откройте настройки Chrome, введите" Настройки контента "в поле поиска, нажмите кнопку" Параметры содержимого "и просмотрите четвертый элемент в разделе" Файлы cookie "." Снимите флажок "Блокировать файлы cookie сторонних производителей и данные сайта".

Надеюсь, это поможет вам в решении вашей проблемы.

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

Ответ 2

В моем случае мне просто пришлось немного подождать, чтобы Google учитывал происхождение. Я не могу точно сказать, сколько времени прошло. Я ждал ~ 30 мин. Затем я заснул, и он работал следующим утром.

Изменить: Ooops Я просто понял, что использовал http://, а не https://. Это была настоящая проблема.

Ответ 3

Проблема связана с консолью Google API и тем, как она обрабатывает создание учетных данных. Кажется, что это работает, когда я обращаюсь к нему через следующий URL-адрес https://developers.google.com/identity/sign-in/web/sign-in#before_you_begin. Существует ссылка, которая позволяет вам создать приложение и учетные данные OAuth, Когда я иду на консоль и создаю ее через этот экран, она не работает. После повторной попытки повторного создания и тестирования со свежим приложением выяснилось, что URL-адрес, который вы добавляете в авторизованный Javascript Origins, не всегда добавляется.

Если все хорошо, то URL-адрес должен быть доступен на странице учетных данных see screenshot here

Ответ 4

У меня была та же проблема, и я искал 3 дня: Resolve "popup_closed_by_user". Перейдите в консоль. Google перейдите к вашему API MANAGE: Учетные данные: измените свои учетные данные:

Авторизованный источник Javascript (http://localhost:port); разрешенный URI перенаправления (http://localhost:port/auth/google/callback);

Пример: || Авторизованный источник Javascript (http://localhost:4200); разрешенный http://localhost:4200/auth/google/callback перенаправления (http://localhost:4200/auth/google/callback)