Твиттер не работает, кросс-источник заблокирован

Я написал некоторый код, который будет использовать oembed для загрузки различных сообщений в социальных сетях на основе того, что введено в атрибуты данных. Элементы Instagram работают нормально, однако элементы Twitter не работают.

Ошибка в консоли: "На запрашиваемом ресурсе отсутствует заголовок" Access-Control-Allow-Origin "."

Я посмотрел на твиттеры и понял, что URL правильный. Почему он заблокирован?

<div class="join-convo">
    <div class="grid-item" data-service="instagram" data-url="/p/BXtn9GTgRTj/"></div>
    <div class="grid-item" data-service="instagram" data-url="/p/BVIk42klsh1/"></div>
    <div class="grid-item" data-service="twitter" data-url="/mro01934/status/908472059403034626"></div>
</div>


function getData(itemService,itemUrl) {
    var serviceLink = '';
    if(itemService == 'instagram') {
        serviceLink = 'https://api.instagram.com/oembed?url=https://www.instagram.com';
    }
    else if(itemService == 'twitter') {
        serviceLink = 'https://publish.twitter.com/oembed?url=https://twitter.com';
    }
    return $j.getJSON( serviceLink + itemUrl )
    .done(function(data) {
        console.log('success');
    })
    .fail(function() {
        console.log('error');
    })
}

$j().ready(function() { 
    var results = [];
    var embedContainer = $j('.join-convo');
    var vidItems = embedContainer.children('.grid-item');

    var p = $j.when(1); // empty promise
    vidItems.each(function(el,i){
        var item = $j(this);
        var service  = item.attr('data-service');
        var url = item.attr('data-url');

        p = p.then(function(){
            return getData(service,url);
        }).then(function(data){
            results[i] = data;
            item.html(results[i].html);
        });
    });
});

0 ответов

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