我正在我正在处理的网站上使用Linq-to-twitter。我想做的就是抓住我的客户最新推文并在网站上列出。
我已在自己的Twitter帐户中为客户创建了一个应用程序。
如果我使用Single User Authentication
或Application Authentication
,我无法解决。
从表面上看,Application Authentication
似乎是正确的,但我不确定这个过程。我是否设置了一个页面,我的客户可以在该页面上授权应用程序,然后存储令牌?在文档中不清楚该令牌是否会过期。
或者我应该使用Single User Authentication
并使用我自己的Twitter帐户中生成的令牌?如果网站被传递给其他人工作并且他们获得令牌,那么该安全风险是否存在任何不利因素? (我确实将应用程序设置为只读,但我第一次使用twitter,所以我不确定)
任何建议都表示赞赏,因为我很困惑。
答案 0 :(得分:1)
应用程序身份验证很有吸引力,因为它会为您提供更多请但是,并非所有查询都允许应用程序身份验证,因为查询是代表用户进行的,而应用程序身份验证是非用户特定的。如果您有代表用户的查询(就像该用户已登录一样),则单用户授权是合适的。
LINQ to Twitter在可下载的源代码中包含演示,包括ASP.NET WebForms或MVC。这些演示假设用户正在通过OAuth授权序列。但是,如果您使用应用程序或单用户授权,则您只需加载凭据并使用 TwitterContext ,而无需让用户完成该过程。控制台演示包含每种授权的示例。
以下是实例化 ApplicationOnlyAuthorizer 的示例:
var auth = new ApplicationOnlyAuthorizer()
{
CredentialStore = new InMemoryCredentialStore
{
ConsumerKey = ConfigurationManager.AppSettings["consumerKey"],
ConsumerSecret = ConfigurationManager.AppSettings["consumerSecret"]
},
};
这是SingleUserAuthorizer的一个例子:
var auth = new SingleUserAuthorizer
{
CredentialStore = new SingleUserInMemoryCredentialStore
{
ConsumerKey = ConfigurationManager.AppSettings["consumerKey"],
ConsumerSecret = ConfigurationManager.AppSettings["consumerSecret"],
AccessToken = ConfigurationManager.AppSettings["accessToken"],
AccessTokenSecret = ConfigurationManager.AppSettings["accessTokenSecret"]
}
};
所有凭据都来自Twitter帐户中的应用程序页面。
在任何一种情况下,都会加载凭据,因此您无需让用户完成OAuth流程,只需创建一个新的 TwitterContext ,如下所示:
await auth.AuthorizeAsync();
var twitterCtx = new TwitterContext(auth);
代币不会过期。因此,每次实例化授权程序时都可以重新加载相同的标记。
您可以使用以下方法通过共享凭据来最大限度地降低安全风险。使用客户的用户帐户或代表客户创建新的用户帐户。然后在客户的帐户下创建一个应用程序并使用这些凭据。您可以让客户访问新帐户,他们将负责自己的凭据。