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
Códigos de respuesta HTTP para solicitudes OAuth: http://oauth.net/core/1.0a/#http_codes – aitchnyu
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
Por favor, muéstrenos el código real que crea el objeto OAuthParameters y solicita el token. – VVS