我正在尝试使用 RestSharp 检索 Twitter OAuth 请求 token ,但无论我尝试什么,API 似乎都会响应 404。这是我的方法代码:
public void GetRequestToken()
{
var client = new RestClient("https://api.twitter.com/1");
var authenticator = OAuth1Authenticator.ForRequestToken(_consumerKey, _consumerSecret);
authenticator.ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader;
client.Authenticator = authenticator;
var request = new RestRequest("/oauth/request_token", Method.POST);
request.AddHeader("oauth_callback", "http%3A%2F%2Fmarkashleybell.com");
var response = client.Execute(request);
var qs = HttpUtility.ParseQueryString(response.Content);
_token = qs["oauth_token"];
_tokenSecret = qs["oauth_token_secret"];
}
_consumerKey
和 _consumerSecret
是从 Web.config
设置中检索的,我已仔细检查它们是否正确。 _token
和 _tokenSecret
是包含此方法的类的私有(private)成员变量。
请求的 API URL 正确。该请求似乎根据 Twitter's documentation 传递了所有正确的 header .
我尝试使用 APIGee console进行相同的 API 调用并查看我做错了什么,但即使也会返回 404。
我在这里做错了什么?
最佳答案
卫生部。事实证明,用于 OAuth 操作的 Twitter API URL 实际上与所有其他 Twitter API 调用的 URL 略有不同,并且省略了 API 版本段,因此这是真正的 404。
还有一种更简洁的方法来提供内置于 RestSharp 身份验证器构造函数中的 oauth_callback
参数 - 作为引用,下面的代码可以完美运行:
public void GetRequestToken()
{
var client = new RestClient("https://api.twitter.com"); // Note NO /1
client.Authenticator = OAuth1Authenticator.ForRequestToken(
_consumerKey,
_consumerSecret,
"http://markashleybell.com" // Value for the oauth_callback parameter
);
var request = new RestRequest("/oauth/request_token", Method.POST);
var response = client.Execute(request);
var qs = HttpUtility.ParseQueryString(response.Content);
_token = qs["oauth_token"];
_tokenSecret = qs["oauth_token_secret"];
}
关于c# - 使用 RestSharp 从 Twitter API 请求 OAuth 请求 token 返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12104603/