【发布时间】:2011-06-25 20:01:33
【问题描述】:
我正在尝试使用 OAuth 从我的 ASP.NET MVC C# 应用程序中对 FreshBooks API 进行身份验证。这是我目前所拥有的:
我正在使用 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) Bad Request。”。
我这样做正确吗?基于应正常工作的 FreshBooks 文档和 DotNetOpenAuth 示例。
是否有更简单的 OAuth 身份验证方法,因为 DotNetOpenAuth 对于简单地使用 OAuth 身份验证来说有点庞大?
【问题讨论】:
标签: c# asp.net oauth dotnetopenauth