我应该如何在客户网站上授权Twitter?

时间:2015-03-15 20:38:00

标签: twitter twitter-oauth linq-to-twitter

我正在我正在处理的网站上使用Linq-to-twitter。我想做的就是抓住我的客户最新推文并在网站上列出。

我已在自己的Twitter帐户中为客户创建了一个应用程序。

如果我使用Single User AuthenticationApplication Authentication,我无法解决。

从表面上看,Application Authentication似乎是正确的,但我不确定这个过程。我是否设置了一个页面,我的客户可以在该页面上授权应用程序,然后存储令牌?在文档中不清楚该令牌是否会过期。

或者我应该使用Single User Authentication并使用我自己的Twitter帐户中生成的令牌?如果网站被传递给其他人工作并且他们获得令牌,那么该安全风险是否存在任何不利因素? (我确实将应用程序设置为只读,但我第一次使用twitter,所以我不确定)

任何建议都表示赞赏,因为我很困惑。

1 个答案:

答案 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);
代币不会过期。因此,每次实例化授权程序时都可以重新加载相同的标记。

您可以使用以下方法通过共享凭据来最大限度地降低安全风险。使用客户的用户帐户或代表客户创建新的用户帐户。然后在客户的帐户下创建一个应用程序并使用这些凭据。您可以让客户访问新帐户,他们将负责自己的凭据。