Я пытаюсь использовать 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?