我一直在为我们的业务开发内部ASP.NET Web表单应用程序,其中一个要求是在我们的门户主页上向所有用户显示我们的Twitter feed。
为此,我决定最好使用LinqToTwitter单用户授权来获取所有人的状态,而无需他们自己的帐户进行身份验证。
我当前的主要问题是,当我们使用auth对象获取TwitterContext时,它会在TwitterContext上返回错误
Value cannot be null
在每个内部上下文对象上。
我已经通过http://dev.twitter.com的Twitter应用设置,我有正确的消费者密钥/令牌和访问密钥/令牌。应用程序的权限设置为只读。 http://dev.twitter.com网站上没有指定回调网址,因为它目前在我们的内部系统上(因此无论如何都无法取回)。这是出错的地方吗?我是否需要转发某些端口并允许回调通过我们的开发机器?
这是谨慎的代码。据我所知,它没有任何问题。我知道它被设置为.FirstOrDefault
,这只是为了看它是否真的得到任何东西(它不是)。
感谢您提供任何帮助! :)
private async Task GetTweets()
{
var auth = new SingleUserAuthorizer
{
CredentialStore = new SingleUserInMemoryCredentialStore
{
ConsumerKey = ConfigurationManager.AppSettings["consumerKey"],
ConsumerSecret = ConfigurationManager.AppSettings["consumerSecret"],
AccessToken = ConfigurationManager.AppSettings["accessToken"],
AccessTokenSecret = ConfigurationManager.AppSettings["accessTokenSecret"],
}
};
try
{
using (TwitterContext twitterContext = new TwitterContext(auth))
{
var searchResponse = await (from c in twitterContext.Status
where c.Type == StatusType.User
&& c.ScreenName == "my_screenname"
select c).ToListAsync();
Tb_home_news.Text = searchResponse.FirstOrDefault().Text;
}
}
catch (Exception ex)
{
Tb_home_news.Text = ex.Message;
}
}
答案 0 :(得分:1)
如果您要创建Web应用程序,则需要在Twitter应用程序页面添加URL。它不能用于回调,但如果您使用AspNetAuthorizer,可能有助于避免将来使用401。
看起来你某处有NullReferenceException。 ex.ToString()说什么?
初始化后仔细检查CredentialStore以确保填充所有4个凭据。 AccessToken和AccessTokenSecret来自您的Twitter应用页面。
searchResponse是否包含任何值?在空集合上调用FirstOrDefault将返回null。