Твиттер внезапно перестал работать

У меня есть несколько твитов, встроенных в страницу моего приложения Angular с помощью твиттера widgets.js, Они работают уже довольно давно. Сегодня я заметил, что они вдруг перестали работать. Я пытался отладить проблему, но я не могу загрузить твиты, что бы я ни пытался. В консоли нет ошибок. Если я вручную инициализирую твиты из консоли, код, кажется, выполняется нормально. Я могу убедиться в этом, войдя в консоль then функция, которая должна вызываться только тогда, когда обещание возвращается twttr.widgets.createTweet() решено.

В моем application.html.erb У меня есть следующее:

<!-- Twitter oEmbed Widget -->
<script>
    window.twttr = (function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0],
        t = window.twttr || {};
        if (d.getElementById(id)) return t;
        js = d.createElement(s);
        js.id = id;
        js.src = "https://platform.twitter.com/widgets.js";
        fjs.parentNode.insertBefore(js, fjs);

        t._e = [];
        t.ready = function(f) {
            t._e.push(f);
        };

        return t;
    }(document, "script", "twitter-wjs"));
</script>

В моем шаблоне директивы я указываю div с идентификатором Tweet следующим образом:

<div class="fade" ng-show="!loading" ng-if="post.provider === 'twitter'" id="{{'post_' + post.id}}"></div>

Затем в контроллере моей директивы я инициализирую виджет после задержки, чтобы убедиться, что DOM готов, вот так:

function loadWidget() {
    if($scope.post.provider === 'twitter') {
        $timeout(function() {
            if(angular.element('#post_' + $scope.post.id).find('iframe').length === 0) {
                twttr.widgets.createTweet($scope.post.twitter_id, document.getElementById('post_' + $scope.post.id)).then(function(resp) {
                    $timeout(function() {
                        $scope.loading = false;
                    })
                });
            };
        }, 2500);
    };
};

Если я вставлю debugger в моем $timeout блок я вижу, что angular.element('#post_' + $scope.post.id) возвращает действительный div из DOM. Я также могу подтвердить, что мой твит находится в Твиттере, если я зайду в свой аккаунт.

Эта установка работала нормально некоторое время. Я не сделал никаких изменений в этом. На самом деле это работало всего несколько часов назад! Я хотел бы знать, как я могу отладить его и выяснить, почему он вдруг перестал работать. Я проверил состояние Twitter API, и он говорит, что у него было 100% безотказной работы в течение последних 24 часов.

Обновить

Мне удалось воспроизвести проблему в jsFiddle. Судя по тому, что я могу сказать, это похоже на проблему с твитами из моей учетной записи, которую я использую для тестирования. Как вы можете видеть в скрипте, я указываю два идентификатора твита: tweetA а также tweetB - а затем вставлять их обоих. Первый, который мой, не загружается. Второй загружается просто отлично.

0 ответов

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