使用RestSharp从Twitter API请求OAuth请求令牌返回404

时间:2012-08-24 07:02:53

标签: c# twitter oauth restsharp

我正在尝试使用RestSharp检索Twitter OAuth请求令牌,但无论我尝试什么,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设置中检索了

_consumerSecretWeb.config,并且我已经仔细检查过它们是否正确。 _token_tokenSecret是包含此方法的类的私有成员变量。

请求的API网址是否正确。请求似乎是根据Twitter's documentation传递所有正确的标头。

我尝试使用APIGee console进行相同的API调用,看看我做错了什么,但即使 也会返回404.

我在这里做错了什么?

1 个答案:

答案 0 :(得分:4)

DOH 。事实证明,OAuth操作的Twitter API URL实际上与所有其他Twitter API调用略有不同,并且省略了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"];
}