Добавить логин Facebook в приложение Apache Cordovs для iOS и Android

В настоящее время я работаю над кроссплатформенным мобильным приложением в Visual Studio, которое разворачивается на платформах iOS и Android. В течение последних нескольких недель я безуспешно пытался добавить в мое приложение имя входа с помощью кнопки Facebook для доступа к таким функциям, как имя, адрес электронной почты и изображение профиля.

Для начала я следовал примеру кода, предложенному быстрым запуском портала facebook, в сочетании с найденным здесь statusChangeCallback, этот код можно найти ниже (идентификатор приложения заменен для конфиденциальности):

<script>
    window.fbAsyncInit = function () {
        FB.init({
            appId: '<my app id>',
            cookie: true,
            xfbml: true,
            version: 'v3.0'
        });

        FB.AppEvents.logPageView();

        FB.getLoginStatus(function (response) {
            statusChangeCallback(response);
            console.log("RESPONSE" + response)
        });

    };

    function statusChangeCallback(response) {
        console.log('statusChangeCallback');
        console.log(response);
        // The response object is returned with a status field that lets the
        // app know the current login status of the person.
        // Full docs on the response object can be found in the documentation
        // for FB.getLoginStatus().
        if (response.status === 'connected') {
            // Logged into your app and Facebook.
            console.log('Welcome!  Fetching your information.... ');
            FB.api('/me', function (response) {
                console.log('Successful login for: ' + response.name);
                document.getElementById('status').innerHTML =
                    'Thanks for logging in, ' + response.name + '!';
            });
        } else {
            // The person is not logged into your app or we are unable to tell.
            document.getElementById('status').innerHTML = 'Please log ' +
                'into this app.';
        }
    }

    (function (d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) { return; }
        js = d.createElement(s); js.id = id;
        js.src = "https://connect.facebook.net/en_US/sdk.js";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
</script>

Когда я запускаю этот код в симуляторе в моем браузере, кнопка входа в систему и вспомогательный текст выглядят так, как должно:

Но когда я нажимаю на кнопку входа в систему, я получаю белый экран со следующим:

Refused to display 'https://www.facebook.com/v3.0/dialog/oauth?channel=http%3A%2F%2Fstaticxx.facebook.com%2Fconnect%2Fxd_arbiter%2Fr%2F1e2RywyANNe.js%3Fversion%3D42%23cb%3Df684723e209734%26domain%3Dlocalhost%26origin%3Dhttp%253A%252F%252Flocalhost%253A4400%252Ff132608511402ac%26relation%3Dopener&redirect_uri=http%3A%2F%2Fstaticxx.facebook.com%2Fconnect%2Fxd_arbiter%2Fr%2F1e2RywyANNe.js%3Fversion%3D42%23cb%3Df150876c6bbae7%26domain%3Dlocalhost%26origin%3Dhttp%253A%252F%252Flocalhost%253A4400%252Ff132608511402ac%26relation%3Dopener%26frame%3Df2ec5b33bb9094&scope&response_type=none%2Ctoken%2Csigned_request&domain=localhost&auth_type&ref=LoginButton&origin=2&client_id=1982815652006432&sdk=joey&_rdr' in a frame because it set 'X-Frame-Options' to 'deny'.

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

Я пытался заставить это работать с и без плагина Facebook для Apache Cordova, и я пробовал много разных комбинаций сайтов и доменов на моем портале для разработчиков Facebook, но я все еще не могу понять проблему.

Ниже приведена текущая конфигурация на моем портале для разработчиков на Facebook. Я считаю, что это правильно, поскольку мой файл index.html размещен на http://localhost:4400/index.html

Единственные причины, по которым я могу думать, что это не работает, это потому, что а) у меня установлен плагин facebook для apache cordova, когда я не должен б) поля localhost неправильно настроены на портале в) мне нужно нажать "добавить" Платформа "и создайте платформу iOS и Android. d) Мой код инициализации неверен.

Большое спасибо за любую помощь и вклад, это очень ценится.

0 ответов

Другие вопросы по тегам