Hemos estado usando la API de Google Picker durante bastante tiempo, y recientemente comenzó a aparecer para los usuarios de Chrome como un IFRAME en blanco, con los siguientes errores que se muestran en la consola:
[Report Only] Refused to frame 'https://docs.google.com/' because an ancestor violates the following Content Security Policy directive: frame-ancestors https://docs.google.com". 2399533774-picker_modularized_opc.js:1112 Uncaught Error: Incorrect origin value. Please set it to - (window.location.protocol + '//' + window.location.host) of the top-most page at new JJ (2399533774-picker_modularized_opc.js:1112) at 2399533774-picker_modularized_opc.js:1115 at HTMLDocument.<anonymous> (picker:61)``` rpc.js?c=1&container=onepick:127 Invalid rpc message origin. vs https://...our domainNo ha habido ningún cambio en la configuración de nuestra consola API de Google.
En Firefox, el IFRAME del selector se muestra e incluso permite la selección de archivos, pero elegir un archivo y hacer clic en Seleccionar hace que la interfaz de usuario reaccione como si se hubiera realizado la selección (deshabilitando el botón Seleccionar), pero no invoca el llamar de vuelta.
La creación del selector es básicamente sacada directamente del "hola mundo" de la documentación y, nuevamente, no hemos tocado esta integración en mucho tiempo.
if (pickerApiLoaded && oauthToken) { var view = new google.picker.View(google.picker.ViewId.DOCS); view.setMimeTypes("application/vnd.google-apps.spreadsheet"); var picker = new google.picker.PickerBuilder() .setAppId(appId) .setOAuthToken(oauthToken) .addView(view) .setDeveloperKey(developerKey) .setCallback(pickerCallback) .build(); picker.setVisible(true); }Firefox: (El diálogo es visible pero no permite la selección)
Chrome: (el cuadro de diálogo está vacío)
Finalmente, redujimos esto a un conflicto con la biblioteca modal de MooTools/Squeezebox utilizada en nuestro sitio al eliminar las dependencias de JS una por una hasta que el modal de Google Drive comenzó a funcionar nuevamente. No estoy seguro de qué cambió Google, pero la eliminación de Squeezebox en esta página solucionó el problema. Estos fueron los culpables: