Ошибка инициализации 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
)