1

我想在网页中添加一个部分,其中将包含有关特定主题的最新推文的滚动列表。如何实现?

如果始终是同一个主题,是否会像在带有 URL 的网页中嵌入网页一样简单:

http://topsy.com/s?q=%23marktwain

(用任何主题替换“marktwain”)?

4

4 回答 4

2

您可以使用Tweetsharp来利用 twitter api

于 2013-02-16T16:07:23.330 回答
2

您可以创建一个嵌入式时间线,或者您可以尝试实时推文- 一个 jquery 插件

于 2013-02-16T16:10:14.443 回答
1

您将面临的问题之一是需要对所有查询使用 OAuth,这是 Twitter API v1.1 所要求的。Twitter 已弃用 API 的 v1.0,并将在下个月将其关闭之前开始进行停电。我也没有在 Twitter 的网页上看到任何网页小部件来执行此操作。

如果您将其嵌入到网页中,您将需要一个 JavaScript OAuth 库,这也意味着您的凭据必须在您的网页中——这是一种不安全的方法。

Silverlight 是一种可能性,但微软对 H​​TML/JavaScript 的关注使其未来处于可疑状态。此外,有人还可以反编译组件并获取您的凭据,这也是不安全的。

这使得服务器端解决方案成为最佳可能性。你可以通过拉或推来处理这个问题。SignalR 将是一个很好的推送方法,但代价是您需要一个持续运行的进程来立即更新。如果您运行自己的服务器,则可以通过 Windows 服务运行一个进程,该进程要么执行定期搜索查询,要么使用过滤器流并使用 SignalR 将结果推送到页面。在拉取方法中,您的页面可以运行一个带有 Ajax 查询的计时器返回服务器,收集新的推文并将它们显示在页面上。这些只是几个想法,但提供给您一个关于如何解决问题的想法。

Twitter 有一个您可以使用的库列表。我写了LINQ to Twitter,它也支持 Twitter API v1.1。

于 2013-02-16T17:20:31.187 回答
1

我最近写了一些东西。希望这可以帮助。https://devtasks.blogspot.com/2013/06/console-app-that-displays-twitter-feed.html

using System;
using System.Linq;
using LinqToTwitter;
using System.Threading;

namespace Linq2Twitter
{
    class Program
    {
        /// <summary>
        /// Controls the flow of the program.
        /// </summary>
        /// <param name="args">The args.</param>
        static void Main(string[] args)
        {
            // This is a super simple example that
            // retrieves the latest tweets of a given 
            // twitter user.

            // SECTION A: Initialise local variables
            Console.WriteLine("SECTION A: Initialise local variables");

            // Access token goes here .. (Please generate your own)
            const string accessToken = "Access token goes here .. (Please generate your own)";
            // Access token secret goes here .. (Please generate your own)
            const string accessTokenSecret = "Access token secret goes here .. (Please generate your own)";

            // Api key goes here .. (Please generate your own)
            const string consumerKey = "Api key goes here .. (Please generate your own)";
            // Api secret goes here .. (Please generate your own)
            const string consumerSecret = "Api secret goes here .. (Please generate your own)";

            // The twitter account name goes here
            const string twitterAccountToDisplay = "roeburg"; 


            // SECTION B: Setup Single User Authorisation
            Console.WriteLine("SECTION B: Setup Single User Authorisation");
            var authorizer = new SingleUserAuthorizer
            {
                CredentialStore = new InMemoryCredentialStore
                {
                    ConsumerKey = consumerKey,
                    ConsumerSecret = consumerSecret,
                    OAuthToken = accessToken,
                    OAuthTokenSecret = accessTokenSecret
                }
            };

            // SECTION C: Generate the Twitter Context
            Console.WriteLine("SECTION C: Generate the Twitter Context");
            var twitterContext = new TwitterContext(authorizer);

            // SECTION D: Get Tweets for user
            Console.WriteLine("SECTION D: Get Tweets for user");
            var statusTweets = from tweet in twitterContext.Status
                               where tweet.Type == StatusType.User &&
                                       tweet.ScreenName == twitterAccountToDisplay &&
                                       tweet.IncludeContributorDetails == true &&
                                       tweet.Count == 10 &&
                                       tweet.IncludeEntities == true
                               select tweet;

            // SECTION E: Print Tweets
            Console.WriteLine("SECTION E: Print Tweets");
            PrintTweets(statusTweets);
            Console.ReadLine();
        }

        /// <summary>
        /// Prints the tweets.
        /// </summary>
        /// <param name="statusTweets">The status tweets.</param>
        /// <exception cref="System.NotImplementedException"></exception>
        private static void PrintTweets(IQueryable<Status> statusTweets)
        {
            foreach (var statusTweet in statusTweets)
            {
                Console.WriteLine(string.Format("\n\nTweet From [{0}] at [{1}]: \n-{2}",
                    statusTweet.ScreenName,
                    statusTweet.CreatedAt,
                    statusTweet.Text));
            
                Thread.Sleep(1000);
            }
        }
    }
}
于 2013-07-19T23:52:45.310 回答