我想在网页中添加一个部分,其中包含特定主题的最新推文的滚动列表。如何实现这一目标?
如果它总是相同的主题,那么就像在网页中嵌入网页一样简单:
http://topsy.com/s?q=%23marktwain
(用主题取代“marktwain”)?
答案 0 :(得分:2)
您可以使用Tweetsharp来利用twitter api
答案 1 :(得分:2)
您可以创建embedded timeline,也可以试用live tweet - jquery插件
答案 2 :(得分:1)
您将面临的一个问题是需要在所有查询中使用OAuth,这是Twitter API v1.1所要求的。 Twitter已经弃用了API的v1.0,并将在下个月关闭它之前开始停电。我在Twitter的网页上看不到任何网页小部件来做这件事。
如果您将其嵌入网页中,则需要一个JavaScript OAuth库,这也意味着您的凭据必须位于您的网页中 - 这是一种不安全的方法。
Silverlight是一种可能性,但微软对HTML / JavaScript的关注使它的未来处于可疑状态。此外,有人还可以反编译组件并获取您的凭据,这也是不安全的。
这使得服务器端解决方案成为最佳可能性。你可以通过拉或推来解决这个问题。 SignalR对于推送来说是一个很好的方法,但权衡的是你需要一个持续运行的过程来立即更新。如果您运行自己的服务器,则可以通过Windows服务运行一个进程,该进程可以执行定期搜索查询,也可以使用Filter Stream并使用SignalR将结果推送到页面。在pull方法中,您的页面可以运行带有Ajax查询的计时器回到服务器,收集新推文并在页面上显示它们。这些只是一些想法,但是可以让您了解如何解决问题。
Twitter有一个你可以使用的Libraries列表。我写了LINQ to Twitter,它也支持Twitter API v1.1。
答案 3 :(得分:1)
我最近写了一些东西。希望这可以帮助。 http://blog.rohit-lakhanpal.info/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);
}
}
}
}