我試圖通過Google .Net GData客戶端庫生成OAuth訪問令牌。我一直在使用http://code.google.com/apis/gdata/docs/auth/oauth.html中的說明作爲指導,並且一直在努力,直到我嘗試呼叫OAuthUtil.GetAccessToken(parameters)
,此時我收到一個「(400)錯誤請求」Web異常。谷歌GData .Net OAuthUtil.GetAccessToken 400錯誤的請求
不幸的是,它沒有告訴我任何有關爲什麼這是一個不好的請求。所以,我對此感到困惑。我唯一的想法是,因爲我使用的是localhost
網址,它不起作用(儘管我已經在Google API控制檯中註冊了該網址,但似乎可以這麼做)。
任何想法我在做什麼錯在這裏,我應該怎麼做才能使它正確?
的OAuthParameters
對象構造像這樣(敏感數據審查,希望並不能使它很難回答):
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>
這轉化爲標題的網頁響應這是像這樣:(添加換行符爲了可讀性)
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>
注意:以上編輯值在GData代碼相關的地方被正確編碼。
和請求URI是:https://www.google.com/accounts/OAuthGetAccessToken
在行186錯誤的發生按照位於這裏的類:http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/src/core/oauthutil.cs?r=1123
OAuth請求的HTTP響應代碼:http://oauth.net/core/1.0a/#http_codes – aitchnyu 2012-02-28 17:17:36
使用fiddler檢查http響應(應該有一個錯誤代碼/描述,說明您爲什麼要獲得400響應在標題或正文中)或處理HttpWebException並檢查那裏的響應。 – JoshSchlesinger 2012-03-01 04:09:50
請向我們展示創建OAuthParameters對象並請求令牌的實際代碼。 – VVS 2012-03-30 08:03:00