【问题标题】:twitter api in c# without pop authorize dialogc#中的twitter api没有弹出授权对话框
【发布时间】:2013-09-24 13:51:21
【问题描述】:

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

我希望在不弹出授权对话框的情况下启动作业。有没有一种方法可以在不弹出任何对话框的情况下调用 twitter api?

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

【问题讨论】:

  • 您尝试过哪些 API?弹出窗口可能是 Twitter API v1.1 的强制功能。
  • 如果我没记错的话,我认为 Twitter 没有长期存在的访问令牌。
  • 我想我的问题是,我必须以交互方式授权吗?或者我的控制台应用程序可以在没有任何用户交互的情况下自动授权吗?
  • @David Twitter 确实有长期存在的访问令牌。存储和重复使用它们没有问题。

标签: c# twitter


【解决方案1】:

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

    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 网站在Single User Authorization 上也有文档。网站上有一个Samples 页面,downloadable source code 有工作演示。顺便说一句,Twitter 用户令牌通常永远不会过期,因此您可以存储并继续使用相同的令牌。

【讨论】:

  • linqto twitter 不支持 v1.1 的 api
  • @magic-c0d3r LINQ to Twitter 支持 v1.1 的 Twitter API。这是第一个这样做的 .NET 库。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 这并不完全正确。我刚刚发布了代码来展示控制台应用程序如何在没有交互的情况下进行授权。您的第二点是有效的,它表明了为什么需要 OAuth 的基本概念。但是,它错过了他在后台“执行搜索”的基本要求的前提,这不应该需要用户交互。
    猜你喜欢
    • 2020-03-16
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    相关资源
    最近更新 更多