【问题标题】:New Twitter API: using it for a custom twitter feed新的 Twitter API:将其用于自定义 Twitter 提要
【发布时间】:2013-06-09 06:41:06
【问题描述】:

人类。
我有一个自定义的 Twitter 提要小部件,它在 API 更新之前工作正常。代码是这样的:

<ul id="twitter_update_list"><li>Twitter feed loading</li></ul>
<script type="text/javascript" src="http://twitter.com/javascripts/blogger.js"></script>
<script type="text/javascript" src="https://api.twitter.com/1.1/statuses/user_timeline/username.json?callback=twitterCallback2&amp;count=4"></script>

现在他们已更新到 API 1.1,此代码不起作用。所以,我的问题是,现在有没有人需要改变才能让它工作?还是我只需要开始使用他们的提要小部件?感谢您的任何回答!

【问题讨论】:

    标签: javascript widget twitter feed


    【解决方案1】:

    您可以通过现场示例在此处获得解决方案

    http://codepen.io/jasonmayes/pen/Ioype

    【讨论】:

      【解决方案2】:

      您也可以使用此代码将您的 twitter 提要获取到任何网页。请尝试将其放到服务器上(因为有时我看到无法在本地机器上获取提要的问题,但不要担心它会在服务器上工作 - 比如说带有 .php 文件扩展名)

         <script>
      
        var twitterFetcher=function(){function t(d){return d.replace(/<b[^>]*>(.*?)<\/b>/gi,function(c,d){return d}).replace(/class=".*?"|data-query-source=".*?"|dir=".*?"|rel=".*?"/gi,"")}function m(d,c){for(var f=[],e=RegExp("(^| )"+c+"( |$)"),g=d.getElementsByTagName("*"),b=0,a=g.length;b<a;b++)e.test(g[b].className)&&f.push(g[b]);return f}var u="",j=20,n=!0,h=[],p=!1,k=!0,l=!0,q=null,r=!0;return{fetch:function(d,c,f,e,g,b,a){void 0===f&&(f=20);void 0===e&&(n=!0);void 0===g&&(g=!0);void 0===b&&(b=!0);
        void 0===a&&(a="default");p?h.push({id:d,domId:c,maxTweets:f,enableLinks:e,showUser:g,showTime:b,dateFunction:a}):(p=!0,u=c,j=f,n=e,l=g,k=b,q=a,c=document.createElement("script"),c.type="text/javascript",c.src="//cdn.syndication.twimg.com/widgets/timelines/"+d+"?&lang=en&callback=twitterFetcher.callback&suppress_response_codes=true&rnd="+Math.random(),document.getElementsByTagName("head")[0].appendChild(c))},callback:function(d){var c=document.createElement("div");c.innerHTML=d.body;"undefined"===
        typeof c.getElementsByClassName&&(r=!1);var f=d=null,e=null;r?(d=c.getElementsByClassName("e-entry-title"),f=c.getElementsByClassName("p-author"),e=c.getElementsByClassName("dt-updated")):(d=m(c,"e-entry-title"),f=m(c,"p-author"),e=m(c,"dt-updated"));for(var c=[],g=d.length,b=0;b<g;){if("string"!==typeof q){var a=new Date(e[b].getAttribute("datetime").replace(/-/g,"/").replace("T"," ").split("+")[0]),a=q(a);e[b].setAttribute("aria-label",a);if(d[b].innerText)if(r)e[b].innerText=a;else{var s=document.createElement("p"),
        v=document.createTextNode(a);s.appendChild(v);s.setAttribute("aria-label",a);e[b]=s}else e[b].textContent=a}n?(a="",l&&(a+='<div class="user">'+"</div>"),a+='<p class="tweet">'+t(d[b].innerHTML)+"</p>",k&&(a+='<p class="timePosted">'+e[b].getAttribute("aria-label")+"</p>")):d[b].innerText?(a="",l&&(a+='<p class="user">'+f[b].innerText+"</p>"),a+='<p class="tweet">'+d[b].innerText+"</p>",k&&(a+='<p class="timePosted">'+e[b].innerText+"</p>")):(a="",l&&(a+='<p class="user">'+f[b].textContent+
        "</p>"),a+='<p class="tweet">'+d[b].textContent+"</p>",k&&(a+='<p class="timePosted">'+e[b].textContent+"</p>"));c.push(a);b++}c.length>j&&c.splice(j,c.length-j);d=c.length;f=0;e=document.getElementById(u);for(g="<ul>";f<d;)g+="<li>"+c[f]+"</li>",f++;e.innerHTML=g+"</ul>";p=!1;0<h.length&&(twitterFetcher.fetch(h[0].id,h[0].domId,h[0].maxTweets,h[0].enableLinks,h[0].showUser,h[0].showTime,h[0].dateFunction),h.splice(0,1))}}}();
      
      
        /*
        * ### HOW TO CREATE A VALID ID TO USE: ###
        * Go to www.twitter.com and sign in as normal, go to your settings page.
        * Go to "Widgets" on the left hand side.
        * Create a new widget for what you need eg "user timeline" or "search" etc. 
        * Now go back to settings page, and then go back to widgets page, you should
        * see the widget you just created. Click edit.
        * Now look at the URL in your web browser or see the script generated below the widget, you will see a long number like this:
        * 345735908357048478 in url or data-widget-id="345095893361512448" in the generated code
        * Use this as your ID below instead!
        */
      
        /***************
         * twitterFetcher.fetch('Put your twitter id here', 'ID of the container e.g id tweets of container div')
        */*********************
      
        twitterFetcher.fetch('345095893361512448', 'tweets', 5, true);
      
        function dateFormatter(date) {
          return date.toTimeString();
        }
      </script>
      
          <div id="tweets" style="width: 200px;float:left;overflow:hidden"></div>
      

      【讨论】:

      • 看起来这是在抓取和抓取小部件。那是对的吗?这不违反他们的服务条款吗?
      猜你喜欢
      • 2015-09-24
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多