C# 调用account/verify_credentials.json时,Twitter API返回215个错误的身份验证数据

C# 调用account/verify_credentials.json时,Twitter API返回215个错误的身份验证数据,c#,twitter,oauth,twitter-oauth,C#,Twitter,Oauth,Twitter Oauth,我正在编写一个API,它需要验证由TwitterSDK在移动设备上创建的OAuth令牌和令牌机密 为此,我尝试调用twitterapi。我已经跳过了所有的步骤,但在每个请求上我都得到了相同的响应: { "errors": [{ "code": 215, "message": "Bad Authentication data." }] } 我无法解释为什么会发生这种情况,因为我遵循了Twitter的指导原则,还引用了其他几个目标类似的问题,但仍然运气不佳 另外,请注意,

我正在编写一个API,它需要验证由TwitterSDK在移动设备上创建的OAuth令牌和令牌机密

为此,我尝试调用twitterapi。我已经跳过了所有的步骤,但在每个请求上我都得到了相同的响应:

{
  "errors": [{
    "code": 215,
    "message": "Bad Authentication data."
  }] 
}
我无法解释为什么会发生这种情况,因为我遵循了Twitter的指导原则,还引用了其他几个目标类似的问题,但仍然运气不佳

另外,请注意,我不想为此使用库。我只需要提出这一个请求,所以增加一个库是不必要的。下面是生成错误响应的代码:

var httpMethod=httpMethod.Get;
var uri=新的uri(“https://api.twitter.com/1.1/account/verify_credentials.json");
var nonce=Guid.NewGuid().ToString();
var timestamp=Convert.ToInt64((DateTime.UtcNow-newdatetime(1970,1,1)).TotalSeconds).ToString(CultureInfo.InvariantCulture);
var oauthParameters=新的SortedDictionary
{
{“oauth_consumer_key”,Settings.oauth.Twitter.ConsumerKey},
{“oauth_nonce”,nonce},
{“oauth_签名法”,“HMAC-SHA1”},
{“oauth_timestamp”,timestamp},
{“oauth_令牌”,accessToken},
{“oauth_版本”,“1.0”}
};
var signingParameters=新的SortedDictionary(oauthParameters);
var parsedQuery=HttpUtility.ParseQueryString(uri.Query);
foreach(parsedQuery.AllKeys中的var k)
signingParameters.Add(k,parsedQuery[k]);
var parameterString=string.Join(“&”,signingParameters.Keys.Select(k=>$”{Uri.EscapeDataString(k)}={Uri.EscapeDataString(signingParameters[k]));
var stringToSign=string.Join(&),new[]{httpMethod.Method.ToUpper(),uri.AbsoluteUri,parameterString}.Select(uri.EscapeDataString));
var signingKey=Settings.OAuth.Twitter.ConsumerSecret+“&”+tokenSecret;
var signature=Convert.ToBase64String(新的HMACSHA1(Encoding.ASCII.GetBytes(signingKey)).ComputeHash(Encoding.ASCII.GetBytes(stringToSign));
添加(“oauth_签名”,签名);
var authHeader=string.Join(“,”,oauthParameters.Keys.Select(k=>$”{Uri.EscapeDataString(k)}=\“{Uri.EscapeDataString(oauthParameters[k])}\”);
var client=新的HttpClient();
client.DefaultRequestHeaders.Authorization=新的AuthenticationHeaderValue(“OAuth”,authHeader);
var response=await client.GetAsync(uri);
return wait response.Content.ReadAsStringAsync();//总是错误215

我刚刚一字不差地试用了你的代码,效果非常好


您的问题必须是您的twitter应用程序密钥。再次尝试从apps.twitter.com复制它们。如果仍然不起作用,您可能需要重新创建密钥

多谢各位。我重新生成了钥匙,现在可以用了。我不确定是什么原因导致原始密钥失败,但至少我很高兴它现在能工作:)