2012-02-28 22 views
5

Estoy intentando generar un token de acceso OAuth a través de la biblioteca de cliente de Google .Net GData. He estado usando las instrucciones en http://code.google.com/apis/gdata/docs/auth/oauth.html como guía y todo ha estado funcionando hasta que intento llamar al OAuthUtil.GetAccessToken(parameters), en cuyo momento recibo una excepción web "(400) Solicitud incorrecta".Google GData .Net OAuthUtil.GetAccessToken 400 Solicitud incorrecta

Lamentablemente, no me dice nada sobre por qué es una mala solicitud. Entonces, estoy un poco desconcertado acerca de esto. La única idea que tengo es que, debido a que estoy usando una url localhost, no está funcionando (aunque he registrado la url en la consola de la API de Google y parecía estar bien hacerlo).

Alguna idea de lo que estoy haciendo mal aquí y de lo que debería estar haciendo para hacerlo bien?

El objeto OAuthParameters se construye como tal (censurado datos sensibles, la esperanza de que no lo hace difícil de responder):

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> 

Esto se traduce en las cabeceras de la respuesta Web que son como por lo :

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> 

(saltos de línea añaden para facilitar la lectura)

NOTA: Los valores redactados anteriormente están codificados correctamente donde sea relevante por el código GData.

y la solicitud URI es: https://www.google.com/accounts/OAuthGetAccessToken

suceso del error en la línea 186 de acuerdo con la clase que se encuentra aquí: http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/src/core/oauthutil.cs?r=1123

+0

Códigos de respuesta HTTP para solicitudes OAuth: http://oauth.net/core/1.0a/#http_codes – aitchnyu

+0

Utilice el violín para inspeccionar la respuesta http (debe haber un código/descripción de error sobre por qué está obteniendo un 400, o bien en un encabezado o cuerpo) o manejar la HttpWebException y verificar la respuesta allí. – JoshSchlesinger

+0

Por favor, muéstrenos el código real que crea el objeto OAuthParameters y solicita el token. – VVS

Respuesta

1

Esto puede ser totalmente sin relación, pero la URL que haya especificado en su alcance

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

devuelve un error 404

Pienso que usted debe utilizar en su lugar el siguiente:

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

o posiblemente http://www.google.com/calendar/feeds/default/owncalendars/full

+0

Ahora es un poco tarde, pero al mirar la URL que señaló, parece estar un poco desalentada cuando lo pienso (la última vez que revisé Google Docs no estaba relacionada con Google Calendar). De todos modos, aplausos por la respuesta, puede haber sido la solución a nuestro problema si no hubiéramos tomado un enfoque diferente ... –

0

uso de marca de tiempo real. Es sensible al tiempo y al lugar.

Cuestiones relacionadas