2

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設定から_consumerSecret取得されWeb.config、それらが正しいことを再確認しました。_tokenおよび_tokenSecretは、このメソッドを含むクラスのプライベート メンバー変数です。

要求されている API URL は正しいです。Twitter のドキュメントによると、リクエストはすべて正しいヘッダーを渡しているようです。

APIGee コンソールを使用して同じ API 呼び出しを行い、何が間違っているのかを確認しようとしましたが、それでも404返されます。

ここで何が間違っていますか?

4

1 に答える 1

4

ドー。OAuth 操作の Twitter API URL は、実際には他のすべての Twitter API 呼び出しの URL とわずかに異なり、API バージョン セグメントが省略されていることが判明したため、これは本物の 404 でした。

oauth_callbackRestSharp オーセンティケーター コンストラクターに組み込まれたパラメーターを指定する、より適切な方法もありました。参考までに、以下のコードは完全に機能します。

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"];
}
于 2012-08-28T06:26:56.937 に答える