2013-02-03 31 views
6

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?

Trả lời

1

Tôi cũng gặp vấn đề tương tự này. Tôi đã thử 2 libs twitter khác nhau (nút-twitter và ntwitter). Cả hai đều có cùng một vấn đề với 1,1 api. Sửa chữa của bạn dường như đã làm việc cho tôi. Cảm ơn vì điều đó! Điều thú vị là họ áp dụng sửa lỗi tương tự trên dòng 66. Không chắc chắn, nhưng có vẻ như đây là lỗi với nút-oauth. Tôi sẽ bắt đầu bằng cách báo cáo nó ở đó. Sửa chữa của bạn dường như không phá vỡ những thứ cơ bản tôi đang làm với facebook, vì vậy tôi hy vọng đó là một dấu hiệu tốt rằng sửa chữa này không ảnh hưởng đến libs khác.

2

Đây là vấn đề về nút-oauth hoặc vấn đề về API Twitter (Twitter chage hoặc lỗi)?

trích dẫn từ @episod:
"API v1.1 (và nói chung tất cả các API của chúng tôi) đang nhận nghiêm khắc hơn với OAuth và HTTP Trong spec HTTP, một số nhân vật được yêu cầu phải được mã hóa trong các URL và. Cơ quan POST, bao gồm cả parens và dấu nháy đơn. "

Tôi nên báo cáo vấn đề này cho ai?

đây là chủ đề vấn đề: https://dev.twitter.com/discussions/12821

Các vấn đề liên quan