【发布时间】:2015-12-31 14:49:25
【问题描述】:
我正在尝试获取不记名令牌:
public override async Task<string> Post(string path, HttpContent content) {
var encodedConsumerKey = System.Uri.EscapeDataString("1111111111111");
var encodedConsumerKeySecret = System.Uri.EscapeDataString("2222222222222");
var encodedPair = Base64Encode(String.Format("{0}:{1}", encodedConsumerKey, encodedConsumerKeySecret));
HttpRequestMessage request = new HttpRequestMessage{
Method = HttpMethod.Post,
RequestUri = new Uri("https://api.twitter.com/oauth2/token"),
Content = new StringContent("grant_type=client_credentials")
};
request.Headers.TryAddWithoutValidation("Authorization", String.Format("BASIC {0}", encodedPair));
request.Headers.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded");
var result = await HttpClient.SendAsync(request);
return result.Content.ReadAsStringAsync().Result;
}
private static string Base64Encode(string plainText) {
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes);
}
这给了我以下错误 403 'Forbidden'。任何想法,将不胜感激。
【问题讨论】:
-
您正在使用“基本”不记名身份验证调用
OAuth2身份验证?不确定那会飞。 -
肯定会飞。这就是 Twitter 的 app-only authentication 的工作原理。
-
正确,我使用的是纯应用身份验证。但是,它一直给我那个该死的 403 错误。
-
Bearer Token ONLY 用于
OAuth2?
标签: c# oauth dotnet-httpclient