Я пытаюсь использовать Facebook SDK в своем угловом приложении для реализации функций входа в систему с помощью Facebook. Iframe открывается нормально, и процесс входа в систему работает, но после успешного входа iframe не закрывается, и я не получаю никаких ответ (токен) в моем коде. Я также включил этот скрипт в файл index.html и использую его для онлайн-платежей:
<script src="https://test-gateway.mastercard.com/checkout/version/51/checkout.js" data-cancel="cancelCallback"
data-complete="completePaymentCallback" data-timeout="timeoutCallback">
</script>
<script type="text/javascript">
function cancelCallback() {
document.dispatchEvent(new Event('payment-cancel', {bubbles: true}));
}
function completePaymentCallback(data) { //console.log(data);
document.dispatchEvent(new CustomEvent('payment-completed', {bubbles: true, detail: data}));
}
function timeoutCallback() {
document.dispatchEvent(new CustomEvent('payment-timeout', {bubbles: true}))
}
</script>
В скрипте оплаты я регистрирую обратные вызовы для обработки статуса платежа, этот скрипт отвечает за открытие всплывающего окна для обработки онлайн-платежей. Я понял, что если я не включу этот скрипт в мой index.html. Вход в Facebook работает отлично.
Есть ссылка на изображение, объясняющее состояние iframe https://i.ibb.co/TRY2PJS/facebook-login.jpg
Учебник, который я использовал для использования Facebook API, можно найти здесь:
https://medium.com/@sarat.e99/facebook-login-oauth2-from-angular-6-f55a96c2be00
Файл javascript mastercard выдает ошибки в моей консоли, вот ошибка
Uncaught SyntaxError: Unexpected token s in JSON at position 0
at JSON.parse (<anonymous>)
at checkout.js:1
at ZoneDelegate.invokeTask (zone.js:423)
at Zone.runTask (zone.js:195)
at ZoneTask.invokeTask [as invoke] (zone.js:498)
at invokeTask (zone.js:1744)
at globalZoneAwareCallback (zone.js:1781)
Фрагмент кода в сценарии mastercard, который выдает ошибки в моей консоли:
var xDomain = function(targetWindow, targetHost, name) {
var json3 = "undefined" != typeof JSON3 ? JSON3 : require("./json3.js"),
callbacks = {};
! function(callback) {
window.addEventListener ? window.addEventListener("message", callback) : window.attachEvent("onmessage", callback)
}(function(event) {
var payload = "string" == typeof event.data ? JSON.parse(event.data) : event.data,
type = payload.type,
data = payload.data;
if (type && callbacks.hasOwnProperty(type)) return callbacks[type](data)
});