因此,我一直在使用Linq- to -Twitter将Twitter集成添加到我的Windows 8应用商店应用程序中,更多的是为了玩弄它,但我遇到了一个问题。我当前的身份验证代码块是
var auth = new WinRtAuthorizer
{
Credentials = new LocalDataCredentials
{
ConsumerKey = "",
ConsumerSecret = ""
},
UseCompression = true,
Callback = new Uri("http://linqtotwitter.codeplex.com/")
};
if (auth == null || !auth.IsAuthorized)
{
await auth.AuthorizeAsync();
}它工作得很好,除非我进入身份验证屏幕并单击左上角的back按钮,退出身份验证而不提供详细信息。在这一点上,我得到了一个TwitterQueryException:错误的身份验证数据:
var timelineResponse =
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.Home
select tweet)
.ToList();显然,因为身份验证信息是错误的,所以我正在尝试找到一种方法,以便在身份验证失败/退出时停止继续执行其余代码。
我已经尝试了简单的布尔检查,但没有效果。几个小时以来,我一直在思考这个问题,所以如果有任何帮助,我将不胜感激。非常感谢!
发布于 2013-02-01 00:12:10
在执行任何其他操作之前,您可以查询Account.VerifyCredentials以确保用户已登录。下面是一个例子:
const int BadAuthenticationData = 215;
var twitterCtx = new TwitterContext(auth);
try
{
var account =
(from acct in twitterCtx.Account
where acct.Type == AccountType.VerifyCredentials
select acct)
.SingleOrDefault();
await new MessageDialog(
"Screen Name: " + account.User.Identifier.ScreenName,
"Verification Passed")
.ShowAsync();
}
catch (TwitterQueryException tqEx)
{
if (tqEx.ErrorCode == BadAuthenticationData)
{
new MessageDialog(
"User not authenticated",
"Error During Verification.")
.ShowAsync();
return;
}
throw;
}您的错误处理策略将与此不同,这只是一个示例,但它向您展示了如何知道发生了错误,并使您有机会在恢复正常操作之前对问题做出反应。
TwitterQueryException将在ErrorCode属性中包含Twitter错误代码。它还将Message设置为Twitter返回的错误消息。InnerException为底层异常提供了原始的堆栈跟踪,这通常是因为从Twitter返回的WebException错误代码而抛出的堆栈。
https://stackoverflow.com/questions/14608860
复制相似问题