Tôi đang cố gắng tạo mã thông báo truy cập OAuth thông qua Thư viện ứng dụng GData của Google .Net. Tôi đã sử dụng hướng dẫn trong http://code.google.com/apis/gdata/docs/auth/oauth.html làm hướng dẫn và mọi thứ đang hoạt động cho đến khi tôi cố gắng gọi OAuthUtil.GetAccessToken(parameters)
vào thời điểm đó tôi nhận được ngoại lệ web "(400) Yêu cầu không hợp lệ".Google GData .Net OAuthUtil.GetAccessToken 400 Yêu cầu không hợp lệ
Thật không may, nó không cho tôi biết bất cứ điều gì về số lý do tại sao đó là một yêu cầu không hợp lệ. Vì vậy, tôi khá bối rối về điều này. Ý tưởng duy nhất tôi có là, bởi vì tôi đang sử dụng một URL localhost
nó không hoạt động (mặc dù tôi đã đăng ký url trong Google API Console và có vẻ như không sao để làm như vậy).
Bất kỳ ý tưởng nào tôi đang làm sai ở đây và những gì tôi nên làm để làm cho đúng?
Đối tượng OAuthParameters
được xây dựng như vậy (dữ liệu nhạy cảm được kiểm duyệt, hy vọng điều đó không làm cho nó khó khăn để trả lời):
BaseProperties:
oauth_consumer_key: <CLIENT_KEY>,
oauth_nonce: <NONCE>
oauth_signature_method: HMAC-SHA1
oauth_timestamp: 1330440325
oauth_token: <TOKEN>
oauth_verifier: <VERIFIER>
Callback: "http://localhost:57381/subscription_auth.aspx?c=google.calendar"
ConsumerKey: <CLIENT_KEY>
ConsumerSecret: <CLIENT_SECRET>
ExtraProperties
oauth_consumer_secret: <CLIENT_SECRET>
scope: https://docs.google.com/calendar/feeds/
oauth_callback: http://localhost:57381/subscription_auth.aspx?c=google.calendar
Nonce: <NONCE>
Scope: "https://docs.google.com/calendar/feeds/"
Signature: NULL
SignatureMethod: "HMAC-SHA1"
Timestamp: "1330440325"
Token: <TOKEN>
TokenSecret: NULL -- No Token Secret was returned from the callback.
Verifier: <VERIFIER>
này chuyển thành tiêu đề cho các phản ứng web đó là như vậy :
Authorization: OAuth oauth_version="1.0",
oauth_nonce=<NONCE>,
oauth_timestamp="1330441324",
oauth_consumer_key=<CLIENT_KEY>,
oauth_verifier=<VERIFIER>,
oauth_token=<TOKEN>,
oauth_signature_method="HMAC-SHA1",
oauth_signature=<SIGNATURE>
(ngắt dòng thêm vào cho dễ đọc)
LƯU Ý: Các giá trị được redacted ở trên được mã hóa chính xác khi có liên quan bởi mã GData.
Và yêu cầu uri là: https://www.google.com/accounts/OAuthGetAccessToken
xảy ra của lỗi tại dòng 186 như mỗi lớp nằm ở đây: http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/src/core/oauthutil.cs?r=1123
Mã phản hồi HTTP cho yêu cầu OAuth: http://oauth.net/core/1.0a/#http_codes – aitchnyu
Sử dụng trình điều khiển để kiểm tra phản hồi http (cần có mã lỗi/mô tả về lý do bạn nhận được 400 trong tiêu đề hoặc nội dung) hoặc xử lý HttpWebException và kiểm tra phản hồi ở đó. – JoshSchlesinger
Vui lòng cho chúng tôi biết mã thực tế tạo đối tượng OAuthParameters và yêu cầu mã thông báo. – VVS