2012-02-28 14 views
5

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

+0

Kody odpowiedzi HTTP dla żądań OAuth: http://oauth.net/core/1.0a/#http_codes – aitchnyu

+0

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

+0

Pokaż nam aktualny kod, który tworzy obiekt OAuthParameters i żąda tokena. – VVS

Odpowiedz

1

Może to być całkowicie niezwiązane ale URL podałeś w swoim zakresie

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

zwraca błąd 404

Myślę, że należy używać następujące zamiast:

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

lub ewentualnie http://www.google.com/calendar/feeds/default/owncalendars/full

+0

Trochę za późno, ale patrząc na wskazany przez Ciebie adres URL, wydaje mi się, że jest trochę za późno, kiedy o tym myślę (ostatnio sprawdziłem, czy Dokumenty Google nie mają związku z Kalendarzem Google). W każdym razie, okrzyki za odpowiedź - być może było to rozwiązanie naszego problemu, gdybyśmy już nie przyjęli innego podejścia ... –

0

Zastosowanie realne datownik. Jest wrażliwy na czas i lokalizację.

Powiązane problemy