Google Picker отказывается загружаться с ошибкой. Не удалось выполнить «postMessage» в «DOMWindow»: указано целевое происхождение

Я пытаюсь загрузить Google Picker.

Я использую этот пакет npm https://www.npmjs.com/package/google-picker< /а>

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

После завершения аутентификации он пытается открыть iframe Google Picker.

Именно в этот момент iframe не загружается, и я получаю сообщение об ошибке

Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://docs.google.com') does not match the recipient window's origin

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

Я сделал это! Домен точно находится в авторизованных доменах для клиента. Вход в Google работает с моим приложением ... но я просто не могу заставить работать Picker.

Я пробовал как запускать с локального хоста, так и загружать на сервер. Но я получаю ту же ошибку.

Я использую сервер HTTPS. И URL-адрес iframe для средства выбора тоже HTTPS. Так что это не должно быть проблемой.

Что еще я могу попробовать? У меня нет вариантов. Я точно следую API. Я вставил все правильные ключи.


person Nearpoint    schedule 23.09.2017    source источник
comment
Не могли бы вы добавить фрагмент кода, показывающий, как вы используете библиотеку выбора Google? Особенно предложенные варианты.   -  person TMSCH    schedule 26.09.2017


Ответы (2)


Из этого SO post answer цитируется, что проблема связана с целевым источником, который является https.

Я считаю, что это проблема с целевым источником https. Я подозреваю, что это потому, что ваш URL-адрес iFrame использует http вместо https. Попробуйте изменить URL-адрес файла, который вы пытаетесь внедрить, на https.

Например:

var id = getId(url);
  return '//www.youtube.com/embed/' + id + '?showinfo=0&enablejsapi=1&origin=http://localhost:9000';
}

to be:

var id = getId(url);
  return 'https://www.youtube.com/embed/' + id + '?showinfo=0&enablejsapi=1&origin=http://localhost:9000';
}
person MαπμQμαπkγVπ.0    schedule 24.09.2017
comment
Спасибо за ответ, но он не касается моей проблемы. URL-адрес iframe использует HTTPS. И мой веб-сервер также использует HTTPS. - person Nearpoint; 24.09.2017
comment
Удачи с этим? Я как бы сталкиваюсь с той же проблемой. - person Rishi Raj; 27.05.2019

Причина, по которой Google Picker не показывался, на самом деле не была связана с ошибкой консоли.

Несмотря на то, что ошибка консоли появилась, сборщик все еще работает.

Но я думал, что это не работает, потому что я использовал библиотеку pickadate, в которой был CSS, конфликтующий с Google Picker.

Подробнее об этой проблеме здесь: https://github.com/amsul/pickadate.js/issues/619

person Nearpoint    schedule 26.09.2017