2013-05-13 131 views
1

我有一个MVC4网络应用程序,它使用LinqToTwitter在用户的个人资料页面被访问时显示推文,如果他们有Twitter处理。LinqToTwitter - 对于ApplicationOnlyAuthorizer,IsAuthorized总是返回false

为此,我使用ApplicationOnlyAuthorizer:

var auth = new ApplicationOnlyAuthorizer 
{ 
    Credentials = new InMemoryCredentials 
    { 
    ConsumerKey = "twitterConsumerKey", 
    ConsumerSecret = "twitterConsumerSecret" 
    } 
}; 
auth.Authorize(); 

我的问题是,我发现auth.IsAuthorized总是返回false,即使我有打电话Authorize()和我能够成功地让到Twitter电话。而且,我发现,如果我在拨打Twitter的每个电话中拨打Authorize(),如果我重复拨打足够多的时间,则会抛出未处理的异常。

在我打电话给Twitter之前,我能够知道auth是否被授权似乎相当重要。现在,我已经在一个快速修复中存储我自己的IsAuthorized Session变量 - 但我不确定这是多么可靠,因为Session变量可能会超过实际身份验证本身?

任何意见,将不胜感激。

回答

2

您第一次授权时,Twitter将返回一个不记名令牌。授权后,你可以从auth.BearerToken属性中获取。在后续的通话中,您可以重复使用相同的持票人标记。不记名令牌不会过期,除非您使其无效。 Twitter的建议是,您使用不记名令牌约15分钟,然后再重新授权。

+0

无论出于何种原因,我得到BasicToken而不是BearerToken,并且IsAuthorized对我来说始终是虚假的。然后,我收到一个内部异常,包含“远程服务器返回一个错误:(400)错误请求”的错误认证数据。“,有什么想法? – Oakcool 2013-09-06 00:45:25

+0

由于某种原因,这是投掷403禁止错误 – 2014-01-13 07:21:42

+0

@Oakcool你的情况听起来就像一个401.我有一个常见问题在这里:https://linqtotwitter.codeplex.com/wikipage?title=LINQ%20to%20Twitter%20FAQ&referringTitle=Documentation – 2014-01-13 08:21:32