6

ノードアプリケーションプロジェクトで、TwitterAPIをv1.0からv1.1に移行しました。そして、ログファイルにいくつかのエラーが見つかりました。

エラー

{"message":"Could not authenticate you","code":32}

原因

このエラーは、投稿データ(1.1 / statuses / updateへ)に...が含まれている場合に発生します。

  • '
  • ((
  • )。
  • *

解決

node-oauthのnode_modules/oauth / lib / oauth.jsにパッチを適用しました(node-twitterのみを使用)...

から

327   if( (method == "POST" || method == "PUT")  && ( post_body == null && extra_params != null) ) {
328     post_body= querystring.stringify(extra_params);
329   }

 327   if( (method == "POST" || method == "PUT")  && ( post_body == null && extra_params != null) ) {
 328     post_body= querystring.stringify(extra_params);
+331     post_body= post_body.replace(/\!/g, "%21")
+332                         .replace(/\'/g, "%27")
+333                         .replace(/\(/g, "%28")
+334                         .replace(/\)/g, "%29")
+335                         .replace(/\*/g, "%2A");
 336   }

TwitterAPIv1.0はこのパッチを必要としません。v1.1のみが、このパッチがポスト本文を二重にエスケープする必要があります。この変更により、このライブラリを他のoauthサービスに使用できなくなるため、私のパッチはユニバーサルではないと思います...

私の質問

  • これはnode-oauthの問題またはTwitterAPIの問題(Twitterの仕様の変更またはバグ)ですか?
  • この問題を誰に報告すればよいですか?
4

2 に答える 2

2

これはnode-oauthの問題またはTwitterAPIの問題(Twitterの仕様の変更またはバグ)ですか?

@episodからの引用:
"API v1.1(および一般的にすべてのAPI)は、OAuthとHTTPでより厳密になっています。HTTP仕様では、一部の文字をURLとPOST本文にエンコードする必要があります。 。」

この問題を誰に報告すればよいですか?

これが問題のスレッドです:https ://dev.twitter.com/discussions/12821

于 2013-06-19T09:45:16.297 に答える
1

私も同じ問題を経験しました。2つの異なるTwitterライブラリ(node-twitterとntwitter)を試しました。どちらも1.1APIで同じ問題があります。あなたの修正は私のために働いたようです。それをありがとう!66行目に同じ修正を適用しているのは興味深いことです。確かではありませんが、これはnode-oauthのバグのようです。そこで報告することから始めます。あなたの修正は私がFacebookで行っている基本的なことを壊していないようだったので、この修正が他のライブラリに影響を与えていないことを示す良い兆候だと思います。

于 2013-02-03T22:51:17.680 に答える