Tôi đã chiến đấu với OAuth và Twitter trong 2 tuần để cố gắng triển khai. Sau nhiều lần viết lại mã của tôi, cuối cùng tôi đã có một thư viện thực hiện yêu cầu vì nó phải dựa trên thông số 1.0. Tôi đã xác minh nó bằng cách sử dụng this verifier on Google Code và this verifier from Hueniverse.Twitter có triển khai thông số kỹ thuật tắt OAuth không? (C#)
Phiên bản của tôi, phiên bản Google và phiên bản Hueniverse đều có cùng chữ ký chính xác, vì vậy tôi đã kết luận rằng tôi không còn là nguyên nhân nữa (nhưng tôi có thể đặt chân vào miệng bằng cách nêu rõ điều này ...).
Tôi kiểm tra triển khai của mình trước tiên bằng cách tạo yêu cầu thử nghiệm bằng cách sử dụng Bảng điều khiển API của Twitter, trong trường hợp này là cập nhật trạng thái. Tôi sao chép các thông số thay đổi, oauth_nonce và oauth_timestamp, thành tất cả ba người ký nêu trên. Tất cả các thông số khác luôn giống nhau, mã thông báo/bí mật/v.v.
Bàn điều khiển của Twitter tạo ra một chữ ký, nhưng ba thứ khác ở trên tất cả tạo ra một chữ ký khác (từ Twitter, giống hệt nhau).
Vì vậy, câu hỏi của tôi là, tại sao tôi nhận được điều này:
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<request>/1/statuses/update.xml</request>
<error>Could not authenticate with OAuth.</error>
</hash>
... khi tôi nên được thực hiện spec để chữ "T"?
Có điều gì đó cụ thể mà Twitter cần/muốn như là một phần của yêu cầu không? Tôi đã đếm số nonce do Twitter tạo ra là 42 ký tự, có đúng không? Có nên dài 42 ký tự không?
Tôi sẽ đánh giá cao sự trợ giúp của bất kỳ ai có cái nhìn sâu sắc hơn về API hơn tôi rõ ràng là ...
Cảm ơn bạn trước!
CẬP NHẬT: Có người hỏi về cách tôi gửi thông số xác thực nhưng đã xóa bài đăng của họ, idk lý do. Dù sao, các thông số ủy quyền được gửi qua tiêu đề Ủy quyền.
CẬP NHẬT/GIẢI PHÁP:Được di chuyển xuống dưới cùng nơi nó thuộc về câu trả lời.
Vâng, tôi đã tìm ra, và nó khá ngu ngốc ... Trả lời ở trên. Dù sao, về chủ đề của nonce, tôi có một hàm lặp qua a-z, A-Z, 0-9 và xây dựng cho tôi một chuỗi sẽ luôn là ASCII, vì vậy tôi giỏi ở đó, tôi nghĩ vậy. – Gup3rSuR4c
Điều tốt để nghe :) Nhưng bạn có thể muốn chuyển câu trả lời của riêng bạn thành một câu trả lời mới cho câu hỏi này và chấp nhận điều đó, để đánh dấu câu hỏi là đã được giải quyết. Nếu không, nó sẽ vẫn mở. – poke