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

使用RestSharp调用Twitter API v2遇401认证失败问题求助

解决Twitter API v2 401 Unauthorized问题

问题根源分析

你的代码存在两个核心问题,导致认证失败:

  • 参数名错误:Twitter API v2 发送推文的字段是text,而非v1.1版本的status。
  • 请求体格式不匹配:你设置了Content-Type: application/json,但用AddParameter(..., ParameterType.GetOrPost)会将参数以表单/URL参数形式发送,而非JSON格式,这会导致签名验证失败,同时API无法识别请求内容。

另外你的代码是C#语法,下面提供修正后的C#代码,并转成VB.NET版本。

修正后的C#代码

var authenticator = OAuth1Authenticator.ForAccessToken(
    CONSUMER_KEY,
    CONSUMER_SECRET, // 注意:此处应为CONSUMER_SECRET,而非原代码的CONSUMER_TOKEN
    ACCESS_TOKEN,
    ACCESS_TOKEN_SECRET,
    AuthSignatureMethod.HmacSha1
);

var options = new RestClientOptions("https://api.twitter.com/2")
{
    Authenticator = authenticator
};

var client = new RestClient(options);

var request = new RestRequest("/tweets", Method.Post);
// 设置正确的Content-Type
request.AddHeader("Content-Type", "application/json");
// 用AddJsonBody发送JSON格式请求体
request.AddJsonBody(new { text = "test" });

var response = client.Execute(request);
var json_response = response.Content;
Console.WriteLine(json_response);

对应的VB.NET代码

Dim authenticator = OAuth1Authenticator.ForAccessToken(
    CONSUMER_KEY,
    CONSUMER_SECRET, ' 注意:此处应为CONSUMER_SECRET,而非原代码的CONSUMER_TOKEN
    ACCESS_TOKEN,
    ACCESS_TOKEN_SECRET,
    AuthSignatureMethod.HmacSha1
)

Dim options = New RestClientOptions("https://api.twitter.com/2") With {
    .Authenticator = authenticator
}

Dim client = New RestClient(options)

Dim request = New RestRequest("/tweets", Method.Post)
' 设置正确的Content-Type
request.AddHeader("Content-Type", "application/json")
' 发送JSON格式请求体
request.AddJsonBody(New With {.text = "test"})

Dim response = client.Execute(request)
Dim json_response = response.Content
Console.WriteLine(json_response)

关键修改说明

  1. 修正OAuth参数:原代码第二个参数写的CONSUMER_TOKEN是错误的,OAuth1签名需要的是CONSUMER_SECRET,这很可能是认证失败的核心原因。
  2. 适配API v2字段:将status改为text,符合Twitter API v2的请求规范。
  3. 匹配请求格式:用AddJsonBody替代AddParameter,确保请求体为JSON格式,与设置的Content-Type一致,保证签名验证通过。

额外验证点

  • 确认所有密钥、令牌无拼写错误或多余空格。
  • 检查Twitter开发者后台,确保该应用已开启Read and write权限,API v2需要明确配置权限才能发送推文。

内容的提问来源于stack exchange,提问作者Lewnox

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:43:16