2014-03-24 32 views
2

我一直在为我们的业务开发内部ASP.NET Web表单应用程序,其中一个要求是在我们的门户主页上向所有用户显示我们的Twitter供稿。Linq2Twitter单用户授权空值异常

为此,我已决定最好使用LinqToTwitter单用户授权来获取每个人的状态,而无需他们验证自己的帐户。

我在一分钟主要问题是,当我们使用auth对象来获取TwitterContext,它在TwitterContext一个错误说

Value cannot be null 
每个内部上下文对象

返回。

我已经通过我们的叽叽喳喳应用程序设置http://dev.twitter.com,我有我们正确的消费者密钥/令牌和访问密钥/令牌。应用程序的权限设置为只读。在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

如果你要创建一个Web应用程序,你需要一个网址添加到您的Twitter的应用程序页面。它不用于回调,但如果您使用AspNetAuthorizer,可能有助于避免将来使用401。

它看起来像你有一个NullReferenceException的地方。什么ex.ToString()说?

初始化后仔细检查CredentialStore,确保填充了所有4个凭证。 AccessToken和AccessTokenSecret来自你的Twitter应用程序页面。

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

+0

嗨乔梅奥。对不起,我一个月后才回来,被放到其他地方。我已经检查了searchResponse并且从未填充过。它从来没有捕捉到'ex.ToString()'的异常,因为它从来没有那么远,它碰到'await'并且永远不会继续。可能是因为CredentialStore没有存储UserID或ScreenName? – MightyLampshade