C# LinqToTwitter:直接消息/事件示例?

C# LinqToTwitter:直接消息/事件示例?,c#,asp.net,twitter,linq-to-twitter,C#,Asp.net,Twitter,Linq To Twitter,我听说LinqToTwitter已经更新,包含了twitter新的直接消息/事件API。 然而,经过数小时的搜索和谷歌搜索,我找不到一个从一开始就使用LinqToTwitter的好ASP.NETC示例 所以我有我的twitter应用程序4键consumerKey、ConsumerCret、accessToken、accessTokenSecret,现在我该怎么办 如果有人能告诉我如何开始,那么我可以自己继续!我一直在使用TweetMessageEvents,但我认为他们不打算更新它以包含来自Tw

我听说LinqToTwitter已经更新,包含了twitter新的直接消息/事件API。 然而,经过数小时的搜索和谷歌搜索,我找不到一个从一开始就使用LinqToTwitter的好ASP.NETC示例

所以我有我的twitter应用程序4键consumerKey、ConsumerCret、accessToken、accessTokenSecret,现在我该怎么办

如果有人能告诉我如何开始,那么我可以自己继续!我一直在使用TweetMessageEvents,但我认为他们不打算更新它以包含来自Twitter的新API。

它们被称为DirectMessageEvents,以区别于旧的DirectMessages。下面是一个如何创建新DM的示例:

    static async Task NewDirectMessageAsync(TwitterContext twitterCtx)
    {
        const ulong Linq2TwitrID = 15411837;// 16761255;

        DirectMessageEvents message = 
            await twitterCtx.NewDirectMessageEventAsync(
                Linq2TwitrID, 
                "DM from @JoeMayo to @Linq2Twitr of $MSFT & $TSLA with #TwitterAPI #chatbot " +
                "at http://example.com and http://mayosoftware.com on " + DateTime.Now + "!'");

        DMEvent dmEvent = message?.Value?.DMEvent;
        if (dmEvent != null)
            Console.WriteLine(
                "Recipient: {0}, Message: {1}, Date: {2}",
                dmEvent.MessageCreate.Target.RecipientID,
                dmEvent.MessageCreate.MessageData.Text,
                dmEvent.CreatedTimestamp);
    }
如您所见,有一个新的DMEvent实体。值包含Twitter响应和DMEvent hold输入参数的其他属性。下面介绍如何使用这些参数执行查询:

    static async Task ListDirectMessagesAsync(TwitterContext twitterCtx)
    {
        int count = 50; // set to a low number to demo paging
        string cursor = "";
        List<DMEvent> allDmEvents = new List<DMEvent>();

        // you don't have a valid cursor until after the first query
        DirectMessageEvents dmResponse =
            await
                (from dm in twitterCtx.DirectMessageEvents
                 where dm.Type == DirectMessageEventsType.List &&
                       dm.Count == count
                 select dm)
                .SingleOrDefaultAsync();

        allDmEvents.AddRange(dmResponse.Value.DMEvents);
        cursor = dmResponse.Value.NextCursor;

        while (!string.IsNullOrWhiteSpace(cursor))
        {
            dmResponse =
                await
                    (from dm in twitterCtx.DirectMessageEvents
                     where dm.Type == DirectMessageEventsType.List &&
                           dm.Count == count &&
                           dm.Cursor == cursor
                     select dm)
                    .SingleOrDefaultAsync();

            allDmEvents.AddRange(dmResponse.Value.DMEvents);
            cursor = dmResponse.Value.NextCursor;
        }

        if (!allDmEvents.Any())
        {
            Console.WriteLine("No items returned");
            return;
        }

        Console.WriteLine($"Response Count: {allDmEvents.Count}");
        Console.WriteLine("Responses:");

        allDmEvents.ForEach(evt =>
        {
            DirectMessageCreate msgCreate = evt.MessageCreate;

            if (evt != null && msgCreate != null)
                Console.WriteLine(
                    $"DM ID: {evt.ID}\n" +
                    $"From ID: {msgCreate.SenderID ?? "None"}\n" +
                    $"To ID:  {msgCreate.Target?.RecipientID ?? "None"}\n" +
                    $"Message Text: {msgCreate.MessageData?.Text ?? "None"}");
        });
    }

请注意,代码使用游标在DMEvent列表中移动。我有一个任务来记录这些。我有一些示例代码,您可以仔细阅读,以了解如何在源代码中使用项目中的各种方法。

在过去几天中,我一直在尝试使用它应用一个非常简单的测试页面,但它对我不起作用。所有方法都是异步的,必须与wait一起使用,这太复杂了!例如,我想对一个页面中的直接消息进行如下测试:静态异步任务DoDemosAsync{iaAuthorizer auth=DoSingleUserAuth;await auth.AuthorizeAsync;var twitterCtx=new TwitterContextauth;await RunAsynctwitterCtx;}继续:内部静态异步任务运行AsyncTwitterContext twitterCtx{await ShowDirectMessagesAsynctwitterCtx;}现在,在ASP.Net web应用程序中,我想调用DoDemosAsync来查看结果或打印它!但是怎么做呢?假设我想在Page_Load中调用它,但它不是异步的,即使我将它更改为异步,它也永远不会工作!我遗漏了一些东西,你能解释一下吗?ASP.NET的身份验证是不同的。以下是一些示例:以下是文档: