1

新しい Twitter Search API (バージョン 1.1) クエリの count パラメーターを含む問題が発生しています。「count」パラメータを指定せずにクエリを実行すると、15 個のデフォルトの結果が得られます。一方、count パラメーターを含めると、401 Unauthorized Error が発生します。

これ以降、C# の私のコードからの部分的な抜粋が表示されます。

1) 最初に、baseString 変数の末尾を「q=Test&count=100」に設定します。

2) baseString 変数を EscapeDataString 関数に渡した後、予想どおり、末尾は q%3DTest%26count%3D100 になり、パーセント エンコーディングでフォーマットされます。

3) 最後に、送信された resource_url は次のとおりです: https://api.twitter.com/1.1/search/tweets.json?q=Test&count=100

var resource_url = "https://api.twitter.com/1.1/search/tweets.json";

var baseFormat = "oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&q={6}&count={7}";

var baseString = string.Format(baseFormat,
oauth_consumer_key,
oauth_nonce,
oauth_signature_method,
oauth_timestamp,
oauth_token,
oauth_version,
Uri.EscapeDataString(q),
Uri.EscapeDataString(count)
);

baseString = string.Concat("GET&", Uri.EscapeDataString(resource_url), "&", Uri.EscapeDataString(baseString));



var postBody = "q=" + Uri.EscapeDataString(q) + "&count=" + Uri.EscapeDataString(count);
resource_url += "?" + postBody;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(resource_url);

なぜ私がこの 401 エラーを受け取っているのか、誰にも分かりますか?

4

2 に答える 2

0

@JF0001

はい、私は同じ問題を抱えていますが、johnHk はすでに正しい答えを持っています。それは単なる配置の問題です。

これを使用すると、機能しません:

base_Format = "oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}" + "&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&q={6}&result_type={7}&count={8 }"

しかし、私がこれを使用する場合、それは仕事です:

base_Format = "count={8}&oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}" + "&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&q={6}&result_type={7 }"

「count=」パラメータを見てください。はは、最初に並べ替えただけです。

于 2015-05-06T02:32:44.477 に答える
0

同様の問題がありました.OAuth署名を生成すると、Twitterはこの文字列の形式にうるさいようです. 変数の順序を変更しても認証エラーが発生することがわかりました。コード内の特定の行を以下の並べ替えた行に置き換えてみてください。

var resource_url = "https://api.twitter.com/1.1/search/tweets.json";
var tweet_query = "Test";
var tweet_count ="5";

var baseFormat = "count={7}&oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&q={6}";

var baseString = string.Format(baseFormat,
oauth_consumer_key,
oauth_nonce,
oauth_signature_method,
oauth_timestamp,
oauth_token,
oauth_version,
Uri.EscapeDataString(tweet_query),
Uri.EscapeDataString(tweet_count)
);



var postBody = string.Format("q={0}&count={1}", Uri.EscapeDataString(tweet_query), Uri.EscapeDataString(tweet_count));
于 2013-09-19T13:45:13.573 に答える