Отказано, чтобы отобразить фрейм, потому что он установил X-Frame-Options в «DENY» в веб-обозревателе Android

Когда я пытаюсь показать календарь Google в webview, он показывает некоторую ошибку:

[INFO:CONSOLE(0)] "Refused to display 'https://accounts.google.com/ServiceLogin?service=cl&passive=1209600&continue=https://www.google.com/calendar/embed?src%3Detlwhk@gmail.com%26ctz%3DAsia/Hong_Kong&followup=https://www.google.com/calendar/embed?src%3Detlwhk@gmail.com%26ctz%3DAsia/Hong_Kong&btmpl=mobile&ltmpl=mobilex&scc=1' in a frame because it set 'X-Frame-Options' to 'DENY'.", source: about:blank (0) 

И это html-код

 <p><iframe style="border: 0;" src="https://www.google.com/calendar/embed?src=etlwhk%40gmail.com&amp;ctz=Asia/Hong_Kong&amp;output=embed" width="800" height="600" frameborder="0" scrolling="no"></iframe></p> 

И для стороны Android это простой код веб-просмотра

  StringBuilder sb = new StringBuilder(); sb.append("<HTML><HEAD><meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0'><style>img{display: inline; height: auto; max-width: 100%}iframe{width:100%}</style></HEAD><body>"); sb.append(page.page_content_chi.toString()); sb.append("</body></HTML>"); webview.loadDataWithBaseURL("file:///android_asset/", sb.toString(), "text/html", "utf-8", null); 

Как исправить ошибку? Спасибо за помощь.

Вам нужно сделать свой календарь открытым. Это то, что происходит. Поскольку календарь, который вы пытаетесь отобразить, не публикуется публично, Google Calendar сначала хочет узнать, кто вы, чтобы решить, что вам показать, поэтому он отправляет вас на страницу входа в Google , Страница входа защищает себя от захвата кликов, запрещая отображение себя в iframe (это означает, что для параметра 'X-Frame-Options' is set to 'DENY' ).

Если вы сделаете календарь общедоступным, календарь просто покажет его, не пытаясь сначала войти в систему. О том, как разделить календарь, см. Здесь: https://support.google.com/calendar/answer/37083

Вы можете тривиально протестировать на рабочем столе, будет ли это работать в WebView, создав простую тестовую страницу, в которую встроен календарь в iframe, а затем откроется в окне инкогнито Google Chrome, где вы не вошли в сервисы Google. Chrome также откажется показывать Календарь, пока вы не сделаете его общедоступным.

Intereting Posts
JQuery Mobile: сфокусированный входной текст не учитывает z-индекс, появляющийся выше всего остального Android рисовать круг с помощью Path Как потреблять и отклонять всплывающее окно при нажатии на него? Как включить макет дважды в Android? Android.content.ActivityNotFoundException: Невозможно найти явный класс активности ACTION_SCREEN_ON и ACTION_SCREEN_OFF не работают? Эффект AlarmManager на батарею для приложения Будильник Открытие и редактирование PDF-файлов в Android-приложении с API-интерфейсами Процент цвета в Android для дизайна материалов Критерий не работает на службе android с отдельным процессом Как показать зарегистрированный символ Ⓡ или товарного знака в диалоговом окне? Существует ли эффективный способ «непрерывного» автофокуса? Попытка получить r / w доступ к андроиду / системе Проблемы с памятью – фрагменты Авторизация Facebook не работает внутри Android Asynctask или Thread