Próbuję wygenerować token dostępu OAuth za pośrednictwem biblioteki Google .Net GData Client Library. Używam instrukcji w http://code.google.com/apis/gdata/docs/auth/oauth.html jako przewodnika i wszystko działało, dopóki nie spróbuję zadzwonić pod numer OAuthUtil.GetAccessToken(parameters)
, w którym momencie otrzymuję wyjątek sieciowy "(400) Zły wniosek".Google GData .Net OAuthUtil.GetAccessToken 400 Bad Request
Niestety, nic mi nie mówi o dlaczego to zła prośba. Więc jestem trochę zakłopotany. Mam jedyny pomysł, że ponieważ używam adresu URL localhost
, to nie działa (chociaż zarejestrowałem adres URL w Google API Console i wydawało się, że jest to w porządku).
Jakieś pomysły, co robię źle tutaj i co powinienem zrobić, aby to naprawić?
Przedmiotem OAuthParameters
jest zbudowana podobnie jak (dane wrażliwe są cenzurowane, nadzieja, że nie sprawiają, że trudno odpowiedzieć):
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>
To przekłada się na nagłówkach odpowiedzi internetowej, które są tak jak :
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>
(końca linii dodaje dla czytelności)
UWAGA: Powyższe wartości, które zostały zredagowane, są zakodowane poprawnie, jeśli jest to istotne, za pomocą kodu GData.
i żądanie URI jest: https://www.google.com/accounts/OAuthGetAccessToken
happening Błąd jest na linii 186, jak na tej klasy znajduje się tutaj: http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/src/core/oauthutil.cs?r=1123
Kody odpowiedzi HTTP dla żądań OAuth: http://oauth.net/core/1.0a/#http_codes – aitchnyu
Użyj kontrolera, aby sprawdzić odpowiedź HTTP (powinien istnieć kod błędu/opis przyczyny, dla której otrzymujesz 400 w nagłówku lub treści) lub obsłużyć wyjątek HttpWebException i sprawdzić tam odpowiedź. – JoshSchlesinger
Pokaż nam aktualny kod, który tworzy obiekt OAuthParameters i żąda tokena. – VVS