使用TweetInvi调用Twitter API筛选流遇403错误求解决方案
解决TweetInvi Filtered Stream 403错误问题
核心原因
你遇到的403错误主要来自两个关键点:
- API版本弃用:Twitter已彻底弃用v1.1的Filtered Stream端点,当前必须使用v2版本API
- 权限/客户端类型错误:v2的Filtered Stream属于应用级端点,需用Bearer Token创建应用客户端,而非用户级的access token客户端
修正后的代码
使用TweetInvi的v2 API模块实现@提及监控,步骤如下:
- 确保安装v6及以上版本的TweetInvi(该版本全面支持Twitter API v2)
- 用应用级Bearer Token创建客户端,不要使用用户token
- 按v2规则语法添加过滤规则后启动流
// 替换为你的应用Bearer Token var bearerToken = "YOUR_BEARER_TOKEN"; var appClient = new TwitterClient(bearerToken); // 可选:清理已有规则,避免重复添加导致报错 var existingRules = await appClient.StreamsV2.GetFilteredStreamRulesAsync(); if (existingRules.Any()) { await appClient.StreamsV2.DeleteFilteredStreamRulesAsync(existingRules.Select(r => r.Id)); } // 添加监控@指定账号的规则 var mentionRule = new FilteredStreamRule("@AccountToFilterBy", "track-mentions"); await appClient.StreamsV2.AddFilteredStreamRuleAsync(mentionRule); // 创建流并监听事件 var stream = appClient.StreamsV2.CreateFilteredStream(); stream.TweetReceived += (sender, eventArgs) => { // 处理收到的提及推文 Console.WriteLine($"收到提及:{eventArgs.Tweet.Text}"); }; // 启动持续监听 await stream.StartAsync();
关键注意事项
- 客户端类型不能混用:用户级客户端(带access token)无法访问v2的Filtered Stream,必须使用Bearer Token创建的应用客户端
- 规则语法要求:v2过滤规则直接写
@AccountToFilterBy即可,无需额外格式;复杂规则可参考Twitter官方规则语法 - 规则数量限制:基础开发者账号最多可添加5条过滤规则,单条规则最长512字符
- 版本兼容性:TweetInvi v5及以下版本对v2 API支持不完善,建议升级到最新稳定版
关于破坏性更新
TweetInvi在v6版本确实进行了重大更新,全面切换为支持Twitter API v2,旧版v1.1相关流方法因Twitter端点弃用,现在会返回403错误,这正是你遇到问题的根本原因。
内容的提问来源于stack exchange,提问作者gabs
相关产品推荐
相关产品推荐

