0

.NET からステータス更新を呼び出しています。スペースや特殊文字を使用せずにツイートを投稿すると問題なく投稿されますが、他の特殊文字があると別の OAuth 署名ベース文字列が取得され、Twitter Oauth ツールはstatus=Hello worldに対してこれを表示します:

status%3DHello%2520world

.NET Uri.EscapeDataString(post_body) が示している間:

status%3DHello%20world

OAuth署名が異なるため、これにより401無許可が発生します。

どうすればこれを解決できますか? (実際には、スペースの Twitter のコード化は標準ではないようです)

ありがとうございました

4

1 に答える 1

0

Twitterは仕様に従っています..エンコーディングのエンドポイントがどこにあるかによって異なります。

  1. キーと値を URL エンコードします。あなたとツイッターの両方がこれを正しく理解しています。わかるでしょ:
  2. 値よりもキーでソートします。各キーと値を「=」で結合し、これを「&」で他のキーと結合します。「&」がないため、これは何もしません。私はこのツイッターツールを使ったことがないので、ここで推測しています。
  3. この文字列全体をエンコードします。

    "status=hello%20world" -> "status%3Dhello%2520world"

于 2019-01-19T04:21:49.423 に答える