2017-02-08 2 views
2

Я пытаюсь реализовать плагин Facebook Messenger Checkbox в моем приложении AngularJS. Я следую этому руководству https://developers.facebook.com/docs/messenger-platform/plugin-reference/checkbox-plugin.Facebook messenger checkbox плагин не отображается

Мне удалось заставить его работать. Я перехожу к странице, и отображается плагин checkbox для моего мессенджера, но когда я перехожу на другую страницу, а затем вернусь на эту страницу, содержащую Facebook Checkbox Messenger Plugin, она не отображается, и у меня нет ни одного входа в Facebook.

Это мой процесс инициализации для FB

$window.fbAsyncInit = function() { 
    FB.init({ 
     appId: 'MY_FACEBOOK_APP_ID', 
     xfbml: true, 
     version: 'v2.8' 
    }); 
}; 
(function (d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    var fbElement = d.getElementById(id); 
    if (fbElement) { 
    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')); 

и это моя директива для facebook мессенджера флажка плагина

<div 
    class="fb-messenger-checkbox" 
    origin="{{origin}}" 
    page_id="{{pageId}}" 
    messenger_app_id="{{messengerAppId}}" 
    user_ref="{{userRef}}" 
    prechecked="true" 
    allow_login="true" 
    size="xlarge"> 
</div> 

Как я сказал, что все в порядке, когда я провожу первый раз на страницу (затем отображается плагин Facebook Checkbox Messenger). После этого, когда я перехожу на другую страницу и вернусь, плагин больше не отображается. Нет никаких ошибок, и я каждый раз пересчитываю параметр user_ref, чтобы быть случайной строкой.

Мне кажется, что когда один раз FB.init вызывается после этого, когда я перехожу обратно на эту страницу (даже если я снова не FB.init), что-то не так.

Кто-нибудь знает, что может быть проблемой?

ответ

0

Для этого вам необходимо ввести белый список/зарегистрировать свой домен в fb.

+0

Да Я переадресовал домен. Я думаю, что настройки facebook app одобрены, потому что, как я уже сказал, плагин checkbox facebook на самом деле работает, но только в первый раз я перехожу к той странице, которая его содержит. Когда я перемещаю второй/третий/и т. Д., Он просто визуализирует html, который я предоставил, но похоже, что сценарий facebook не запускается и не отображает iframe внутри html, который я предоставил. – user3362996

+0

Обнаружили ли вы публично? Что такое URL? – Ram

1

удостоверьтесь, что вы генерируете уникальный user_ref каждый раз, когда отображается страница. Если же user_ref дается тогда флажок не будет оказывать

0

У меня была такая же проблема, и вы должны использовать в яваскрипта код:

FB.XFBML.parse(document.getElementById('fb-messenger_checkbox')); (ezfb вместо FB, если вы используете угловую-easyFb как I делать)

вы также можете попробовать его в консоли, а вы на ваше приложение, это делает плагин тоже, если вы сделали все остальное правильно:

  • белый список вашего домена
  • рандомизированного пользователя ссылок (например $scope.userRef = Math.floor((Math.random() * 10000000000000) + 1);)

PS: если вы используете угловой-easyfb, вам не нужно загружать любой $ window.fbAsyncInit, ezfb сделать это для вас

+0

Почему один случайный запрос пользователя? Не приведет ли это к тому, что плагин FB не будет отображаться? –

+0

Да точно. Как сказано в документе, каждый раз, когда вы хотите отобразить плагин, вам нужно иметь другой user_ref. Вот почему вы должны рандомизировать эту переменную. –

Смежные вопросы