You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.net Core MVC中Tweetinvi Streams V2/V1.1身份验证失败问题

Tweetinvi Streams V2/V1.1启动失败问题解决

问题根源分析

你的代码存在两个核心错误:

  1. UserFields参数误用:UserFields是指定API返回的用户对象字段(如id、username、name),并非要追踪的用户名。
  2. 缺少过滤规则:Twitter Filtered Stream V2必须先添加过滤规则(如追踪特定用户、关键词)才能启动,否则API会返回请求错误。

修正后的代码示例

首先确保已正确初始化Twitter客户端和Stream对象:

// 替换为你的Twitter API认证信息
var twitterClient = new TwitterClient("你的API_KEY", "你的API_SECRET", "你的BEARER_TOKEN");
var stream = twitterClient.StreamsV2.CreateFilteredStream();

然后调整streamFonk方法:

public async Task streamFonk()
{
    stream.TweetReceived += (sender, eventReceived) =>
    {
        Console.WriteLine($"收到推文:{eventReceived.Tweet.Text}");
    };

    // 添加过滤规则:追踪指定用户发布的推文(from:用户名)
    await stream.AddTweetFilterRule("from:tolgaylmzyzlm");
    // 若要追踪提及该用户的推文,可改为:await stream.AddTweetFilterRule("@tolgaylmzyzlm");

    var pars = new StartFilteredStreamV2Parameters();
    // 指定需要返回的用户字段(可选,按需添加)
    pars.UserFields = new HashSet<string> { "id", "username", "name" };
    // 指定需要返回的推文字段(可选)
    pars.TweetFields = new HashSet<string> { "created_at", "text" };

    try
    {
        await stream.StartAsync(pars);
    }
    catch (Exception e)
    {
        Console.WriteLine($"启动失败:{e.Message}\n{e.StackTrace}");
    }
}

额外排查要点

  • 认证信息验证:确认API密钥、Bearer Token(V2)/OAuth Access Token(V1.1)完全正确,无拼写错误。
  • 权限检查:你的Twitter开发者账号需具备Filtered Stream的访问权限,项目需申请Read-only或更高权限。
  • Asp.net Core运行环境:在MVC控制器中直接启动Stream会因请求上下文结束导致中断,建议将Stream逻辑封装到**后台服务(IHostedService)**中运行,脱离请求生命周期。
  • V1.1兼容调整:若使用V1.1 Stream,需用Streams.CreateFilteredStream()初始化,规则添加方式类似,但认证需用OAuth 1.0a的Access Token和Secret。

内容的提问来源于stack exchange,提问作者Tolga Yılmaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:33:27