0

我想编写一个控制台应用程序,它作为搜索 twitter 的后台任务运行。

我希望在不弹出授权对话框的情况下开始工作。有没有办法可以在不弹出任何对话框的情况下调用 twitter api?

我刚刚发现我需要使用仅应用程序身份验证。我在哪里可以找到仅应用程序身份验证的好示例

4

3 回答 3

2

您可以使用单用户授权或称为仅应用程序授权的更新功能。这是一个如何使用LINQ to Twitter进行 Application Only 的示例:

    private static void HandleApplicationOnlyAuthentication()
    {
        var auth = new ApplicationOnlyAuthorizer
        {
            Credentials = new InMemoryCredentials
            {
                ConsumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"],
                ConsumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"]
            }
        };

        auth.Authorize();
        //auth.Invalidate();

        var twitterCtx = new TwitterContext(auth);

        var srch =
            (from search in twitterCtx.Search
             where search.Type == SearchType.Search &&
                   search.Query == "LINQ to Twitter"
             select search)
            .SingleOrDefault();

        Console.WriteLine("\nQuery: {0}\n", srch.SearchMetaData.Query);
        srch.Statuses.ForEach(entry =>
            Console.WriteLine(
                "ID: {0, -15}, Source: {1}\nContent: {2}\n",
                entry.StatusID, entry.Source, entry.Text));
    }

对 Invalidate 的调用已被注释掉,但您需要为此设置一个计时器,而 Twitter 的经验法则是每 15 分钟左右使承载令牌无效。

LINQ to Twitter 站点也有关于单用户授权的文档。网站上有一个示例页面,可下载的源代码有工作演示。顺便说一句,Twitter 用户令牌通常永远不会过期,因此您可以存储并继续使用相同的令牌。

于 2013-09-24T22:38:25.640 回答
0

乔,工作就像一个魅力!非常感谢您在不太友好的 REST 界面之上构建如此优雅的解决方案。仍在寻找不同的搜索条件:)

于 2013-09-27T01:18:20.800 回答
-1

不,您的控制台应用程序在没有用户交互的情况下无法授权。授权的全部意义在于用户必须采取行动以允许应用程序使用他们的帐户。

相信我,您真的不希望任何应用程序在没有您明确许可的情况下控制您的 Twitter 帐户。:)

于 2013-09-24T17:52:37.757 回答