在我的节点应用程序项目中,我已将 Twitter API 从 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 }
Twitter API v1.0 不需要这个补丁。只有 v1.1 需要此补丁双重转义帖子正文。我认为我的补丁不是通用的,因为这种更改将使该库无法用于任何其他 oauth 服务...
我的问题
- 这是 node-oauth 问题还是 Twitter API 问题(Twitter Spec chage 或 bug)?
- 我应该向谁报告这个问题?