Linq2Twitter单用户授权空值异常

时间:2014-03-24 10:15:51

标签: c# asp.net twitter oauth linq-to-twitter

我一直在为我们的业务开发内部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;
    }
}

1 个答案:

答案 0 :(得分:1)

如果您要创建Web应用程序,则需要在Twitter应用程序页面添加URL。它不能用于回调,但如果您使用AspNetAuthorizer,可能有助于避免将来使用401。

看起来你某处有NullReferenceException。 ex.ToString()说什么?

初始化后仔细检查CredentialStore以确保填充所有4个凭据。 AccessToken和AccessTokenSecret来自您的Twitter应用页面。

searchResponse是否包含任何值?在空集合上调用FirstOrDefault将返回null。