Я пытаюсь использовать OAuth для аутентификации для API FreshBooks из моего приложения ASP.NET MVC C #. Вот что у меня есть:
Я использую DotNetOpenAuth, вот код, который я имею в своем действии контроллера
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));
}
}
TokenManager - это тот же класс, который предоставляется в образце DotNetOpenAuth, я установил свой потребительский секрет, который мне подарил FreshBooks.
На consumer.Channel.Send(consumer.PrepareRequestUserAuthorization(...))
я получил следующее исключение:
«Удаленный сервер возвратил ошибку: (400) неверный запрос.».
Я правильно это делаю? На основе документации FreshBooks и примеров DotNetOpenAuth, которые должны работать правильно.
Есть ли более простой способ аутентификации с помощью OAuth, так как DotNetOpenAuth немного прост для простого использования аутентификации OAuth?