2012-02-28 41 views
5

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

+0

Mã phản hồi HTTP cho yêu cầu OAuth: http://oauth.net/core/1.0a/#http_codes – aitchnyu

+0

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

+0

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

Trả lời

1

Đây có thể là hoàn toàn không liên quan nhưng URL mà bạn đã xác định trong phạm vi của bạn

https://docs.google.com/calendar/feeds/

trả về một lỗi 404

Tôi nghĩ rằng bạn nên sử dụng sau đây thay vì:

http://www.google.com/calendar/feeds/default/

hoặc có thể http://www.google.com/calendar/feeds/default/owncalendars/full

+0

Bây giờ hơi muộn nhưng nhìn vào URL mà bạn đã chỉ ra, có vẻ như nó hơi lệch khi tôi nghĩ về nó (cuối cùng tôi đã kiểm tra Google Documents không liên quan đến Lịch Google). Dù sao, cổ vũ cho câu trả lời - nó có thể là giải pháp cho vấn đề của chúng ta nếu chúng ta chưa thực hiện một cách tiếp cận khác ... –

0

Sử dụng dấu thời gian thực. Nó nhạy cảm với thời gian và ngôn ngữ.

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