Плагин Facebook Checkbox остается скрытым

Я реализую плагин Facebook Checkbox на тестовой странице, как в соответствии с их документация. Однако флажок не отображается. Он остается скрытым.

Вы можете протестировать мою страницу здесь.

Я столкнулся с несколькими другими вопросами SO с той же проблемой, но ни один из них, похоже, не решает мою проблему. Я убедился:

  • что мой домен внесен в белый список моего приложения FB.
  • user_ref всегда уникален.
  • Я владелец приложения, поэтому могу тестировать в режиме разработки.
  • Я вошел в свою учетную запись FB.

Ниже мой код:

<?php $random_val=rand(100000,999999).rand(100000,999999).rand(100000,999999);?>

<html>
<head>
<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId      : '472807186447994',
            xfbml      : true,
            cookie     : true,
            version    : 'v2.6'
        });

        FB.Event.subscribe('messenger_checkbox', function(e) {
            console.log(e);

            if (e.event == 'rendered') {
                console.log("Plugin was rendered");
            } else if (e.event == 'checkbox') {
                var checkboxState = e.state;
                console.log("Checkbox state: " + checkboxState);
            } else if (e.event == 'not_you') {
                console.log("User clicked 'not you'");
            } else if (e.event == 'hidden') {
                console.log("Plugin was hidden");
            }
        });
    };

    (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 = "//connect.facebook.net/en_US/sdk.js";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk')
    );

    function confirmOptIn() {
        FB.AppEvents.logEvent('MessengerCheckboxUserConfirmation', null, {
            'app_id':'472807186447994',
            'page_id':'408145106012959',
            'ref':'some-ref-here',
            'user_ref':'<?php echo $random_val; ?>'
        });
    }
</script>      

<div class="col-md-7">
    <div class="fb-messenger-checkbox"  
        origin="https://maartenbelmans.com/fbtest"
        page_id="408145106012959"
        messenger_app_id="472807186447994"
        user_ref="<?php echo $random_val; ?>" 
        prechecked="false" 
        allow_login="true" 
        size="large">
    </div>   
</div>

<body>
    <input type="button" onclick="confirmOptIn()" value="Confirm Opt-in"/>
</body>

Я не знаю, что делать, чтобы устранить эту проблему. Есть идеи?


person PoeHaH    schedule 28.12.2017    source источник
comment
Вы добавили свой домен в белый список в своем профиле Messenger? developers.facebook.com/docs/messenger- платформа/ссылка/   -  person amuramoto    schedule 28.12.2017
comment
@amuramoto да, я сделал. Смотрите пункт один в моем списке :-)   -  person PoeHaH    schedule 29.12.2017


Ответы (5)


Как я видел, вся политика Fb, которую вы приняли, но одну вещь вы там упустили. Как я видел структуру вашего кода, вы поместили DIV facebook вне раздела body html, что неправильно.

Ссылка: http://pasted.co/b052c12f

    <div class="fb-messenger-checkbox"  
       origin="https://maartenbelmans.com/fbtest"
       page_id="408145106012959"
       messenger_app_id="472807186447994"
       user_ref="<?php echo $random_val; ?>" 
       prechecked="false" 
       allow_login="true" 
      size="large">
   </div>

Этот выше div должен быть внутри тела любой страницы.

Значит, ваша проблема будет решена.

person Chirag Viradiya    schedule 16.04.2018

Вы пытались установить origin="maartenbelmans.com/" в div? Происхождение должно быть только доменом, поэтому прямо сейчас, когда плагин проверяет ваше происхождение по белому списку, совпадений нет.

person amuramoto    schedule 03.01.2018

Однажды я столкнулся с этими проблемами. Один из них был внесен в белый список доменов. Один был исходным.

Другой был, когда я играл с версией, пожалуйста, убедитесь, что версия, которую вы выбрали, так как 2.8 также отсутствует, поэтому 2.6 может на самом деле не быть ею, пожалуйста, узнайте соответствующую версию, над которой вы работаете.

person Ezekiel    schedule 03.01.2018

Я решил это с этим.

Советы по устранению неполадок

Если у вас возникли проблемы с корректным отображением плагина, попробуйте следующие советы:

  1. Убедитесь, что ваш бот действительно одобрен для разрешения pages_messaging.
  2. Убедитесь, что на вашей странице есть подписка на веб-перехватчик вашего бота.
  3. Если вы видите ошибку консоли, например «Отказано в отображении * во фрейме, потому что предок нарушает следующую директиву Content Security Policy: *», убедитесь, что домен страницы, на которой отображается подключаемый модуль, имеет был занесен в белый список.
  4. Если для параметра allow_login установлено значение false, вам потребуется действующий сеанс пользователя Facebook (т. е. вы не вошли в систему), иначе плагин будет скрыт.
  5. Тестирование на локальном хосте сейчас не поддерживается.
person wilfredonoyola    schedule 30.09.2018

У меня такая же проблема. Вот советы из фейсбука:

  1. Убедитесь, что ваш бот действительно одобрен для разрешения pages_messaging.
  2. Убедитесь, что на вашей странице есть подписка на веб-перехватчик вашего бота.
  3. Если вы видите ошибку консоли, например «Отказано в отображении во фрейме, потому что предок нарушает следующую директиву Content Security Policy:», убедитесь, что домен страницы, на которой отображается плагин, внесен в белый список.
  4. Если для параметра allow_login установлено значение false, вам потребуется действующий сеанс пользователя Facebook (т. е. вы не вошли в систему), иначе плагин будет скрыт.
  5. Тестирование на локальном хосте сейчас не поддерживается.
  6. Установите для xfbml значение true только в одном месте. Либо установите для него значение true в FB.init, либо установите его в URL-адресе SDK следующим образом: https://connect.facebook.net/en_US/sdk.js#xfbml=1.

Я следую всем этим советам, но это все равно не сработало.

Мое решение состояло в том, чтобы добавить URL-адрес WebHook и подписаться на события обмена сообщениями.

person Konstantin Bogomolov    schedule 03.12.2019