Estoy tratando de usar OAuth para la autenticación de la API de FreshBooks desde mi aplicación ASP.NET MVC C#. Aquí es lo que tengo hasta ahora:Autenticación a FreshBooks a través de DotNetOpenAuth
estoy usando DotNetOpenAuth Aquí está el código que tengo en la acción del controlador
if (TokenManager != null)
{
ServiceProviderDescription provider = new ServiceProviderDescription();
provider.ProtocolVersion = ProtocolVersion.V10a;
provider.AccessTokenEndpoint = new MessageReceivingEndpoint ("https://myfbid.freshbooks.com/oauth/oauth_access.php", DotNetOpenAuth.Messaging.HttpDeliveryMethods.PostRequest);
provider.RequestTokenEndpoint = new DotNetOpenAuth.Messaging.MessageReceivingEndpoint("https://myfbid.freshbooks.com/oauth/oauth_request.php", DotNetOpenAuth.Messaging.HttpDeliveryMethods.PostRequest);
provider.UserAuthorizationEndpoint = new DotNetOpenAuth.Messaging.MessageReceivingEndpoint("https://myfbid.freshbooks.com/oauth/oauth_authorize.php", DotNetOpenAuth.Messaging.HttpDeliveryMethods.GetRequest);
provider.TamperProtectionElements = new ITamperProtectionChannelBindingElement[] { new HmacSha1SigningBindingElement() };
var consumer = new WebConsumer(provider, TokenManager);
var response = consumer.ProcessUserAuthorization();
if (response != null)
{
this.AccessToken = response.AccessToken;
}
else
{
// we need to request authorization
consumer.Channel.Send(consumer.PrepareRequestUserAuthorization(
new Uri("http://localhost:9876/home/testoauth/"), null, null));
}
}
El TokenManager es la misma clase que se proporciona con la muestra DotNetOpenAuth, I' he establecido mi secreto de consumidor que FreshBooks me dio.
Por consumer.Channel.Send(consumer.PrepareRequestUserAuthorization(...))
Tengo la siguiente excepción:
"The remote server returned an error: (400) Bad Request.".
estoy haciendo esto correctamente? Basado en documentación de FreshBooks y muestras de DotNetOpenAuth que deberían funcionar correctamente.
¿Existe alguna manera más simple de autenticarse con OAuth, ya que DotNetOpenAuth es un poco enorme para simplemente usar la autenticación OAuth?
Gracias por compartir, lo reconozco su biblioteca es fácil de usar, aunque tengo el mismo error 400 Bad Request, voy a empezar pensar que me relacioné con FreshBooks y no con mi implementación. Voy a consultar con ellos directamente. –