Dự án ứng dụng nút của tôi, tôi đã di chuyển API Twitter từ v1.0 sang v1.1. Và tôi đã tìm thấy một số lỗi trong tệp nhật ký của mình.Lỗi hoặc thay đổi Spec (của API Twitter 1.1)
Lỗi
{"message":"Could not authenticate you","code":32}
Nguyên nhân
Lỗi này xảy ra, nếu bài dữ liệu (xuống còn 1,1/trạng thái/cập nhật) là bao gồm ...
- !
- '
- (
- )
- *
Giải pháp
Tôi đã vá node_modules/oauth/lib/oauth.js của nút-oauth (chỉ được sử dụng node- twitter) ...
từ
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 không yêu cầu bản vá này. Chỉ v1.1 yêu cầu bản vá này có thể thoát hai lần một phần thân bài. Tôi nghĩ rằng bản vá của tôi không phải là phổ quát, vì thay đổi này sẽ làm cho nó không thể sử dụng thư viện này cho bất kỳ dịch vụ oauth khác ...
Câu hỏi của tôi
- Đây là vấn đề nút-oauth hay Twitter API vấn đề (Twitter spec chage hoặc lỗi)?
- Tôi nên báo cáo vấn đề này cho ai?