Facebook сообщает об ошибке в кнопке AngularJS [дубликаты]

0

У меня есть две проблемы, которые пытаются интегрировать кнопки Facebook Share в моем приложении SPA. Приложение отображает два списка статей, те, которые были отправлены другим людям и отправленные мной. Каждый из этих двух списков представлен отдельно, нажимая одну из двух кнопок в верхней части страницы. Я использую ng-show для достижения этого (что означает, что эти две переменные $scope, которые установлены на true или false этими кнопками, так что если для параметра $ scope.Others_Posts установлено значение true, отображаются сообщения из других; наоборот, для моих собственных должностей).

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

Это то, что я использую:

<button type="button" class="btn btn-default" 
        aria-haspopup="true" 
        aria-expanded="false" 
        style="width:100%;height:40px;text-align:left">
    <div id="fb-root" style="width:100%;height:0px;margin:-10px 0 0 0 "></div>
    <script>
        (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#xfbml=1&version=v2.5";
            fjs.parentNode.insertBefore(js, fjs);
            }(document, 'script', 'facebook-jssdk')
        );
    </script>
    <style>
        .fb-share-button
        {
            transform: scale(1.5);
            -ms-transform: scale(1.5);
            -webkit-transform: scale(1.5);
            -o-transform: scale(1.5);
            -moz-transform: scale(1.5);
            transform-origin: top left;
            -ms-transform-origin: top left;
            -webkit-transform-origin: top left;
            -moz-transform-origin: top left;
            -webkit-transform-origin: top left;
        }
    </style>


    <div class="fb-share-button" data-href="{{Get_Path_for_Facebook(One_Article)}}" data-layout="button"></div>
</button>

Обратите внимание, что я обматываю стандартный код из Facebook на кнопку, потому что у меня есть другие действия, предлагаемые пользователю.

Моя вторая проблема более ориентирована на AlgularJS. URL, который мне нужно предоставить, включает параметры, которые рассчитываются/создаются удаленно. Поскольку в списке могут быть десятки или сотни записей, я хочу вызвать удаленную службу только тогда, когда это необходимо (т.е. когда пользователь хочет поделиться определенной записью). Предполагается, что это делается функцией Get_Path_for_Facebook(One_Article) которая должна вызываться, когда пользователь нажимает кнопку совместного доступа определенной записи. Проблема заключается в асинхронном поведении обещания, созданного при вызове службы (т.е. функция Get_Path_for_Facebook выдает запрос HTTP с обещанием, которое возвращает необходимые параметры, но это происходит слишком поздно).

Любые предложения по этим двум проблемам будут высоко оценены.

Теги:
facebook

1 ответ

0

Вы можете использовать Facebook sharer.php. Основная концепция:

HTML

<button ng-click="share(selected)">Share</button>

JS

$scope.share = function share(selected) {
    window.open('https://www.facebook.com/sharer/sharer.php?u=https://your.url/&t=' + selected.id, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');
    // anything else you want to do when clicking the share button
}

Вы также можете удалить FB SDK, если вы не используете его ни для чего другого.

  • 0
    Спасибо @JohnSmith. Я попробую и дам вам знать. Один вопрос: должен ли мой сайт быть известен Facebook, я имею в виду, должен ли он быть зарегистрированным в Facebook приложением (с присвоенным ему идентификатором?
  • 0
    Прошло много времени с тех пор, как я последний раз использовал его, но, насколько я помню, нет, вам не нужно ничего регистрировать.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню