c# – 通过DotNetOpenAuth对FreshBooks进行身份验证
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 通过DotNetOpenAuth对FreshBooks进行身份验证,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2999字,纯文字阅读大概需要5分钟。
内容图文
![c# – 通过DotNetOpenAuth对FreshBooks进行身份验证](/upload/InfoBanner/zyjiaocheng/825/963397ccc6954312b74401fe0d59ba29.jpg)
我正在尝试使用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(…))上我有以下异常:
“The remote server returned an error: (400) Bad Request.”.
我这样做了吗?基于FreshBooks文档和DotNetOpenAuth样本应该正常工作.
是否有更简单的方法来验证OAuth,因为DotNetOpenAuth对于简单地使用OAuth身份验证来说有点大?
解决方法:
如果你想使用DotNetOpenAuth,你需要确保:
>你使用签名方法“PLAINTEXT”
>并使用PlaintextSigningBindingElement作为TamperProtectionElements
这样的事情对我有用:
public static readonly ServiceProviderDescription ServiceDescription = new ServiceProviderDescription
{
ProtocolVersion = ProtocolVersion.V10a,
RequestTokenEndpoint = new MessageReceivingEndpoint(oAuthBase + "/oauth_request.php", HttpDeliveryMethods.PostRequest),
UserAuthorizationEndpoint = new MessageReceivingEndpoint(oAuthBase + "/oauth_authorize.php", HttpDeliveryMethods.GetRequest | HttpDeliveryMethods.AuthorizationHeaderRequest),
AccessTokenEndpoint = new MessageReceivingEndpoint(oAuthBase + "/oauth_access.php", HttpDeliveryMethods.PostRequest | HttpDeliveryMethods.AuthorizationHeaderRequest),
TamperProtectionElements = new ITamperProtectionChannelBindingElement[] { new PlaintextSigningBindingElement() }
};
public static void RequestAuthorization(WebConsumer consumer)
{
if (consumer == null)
{
throw new ArgumentNullException("consumer");
}
var extraParameters = new Dictionary<string, string> {
{ "oauth_signature_method", "PLAINTEXT" },
};
Uri callback = Util.GetCallbackUrlFromContext();
var request = consumer.PrepareRequestUserAuthorization(callback, extraParameters, null);
consumer.Channel.Send(request);
}
内容总结
以上是互联网集市为您收集整理的c# – 通过DotNetOpenAuth对FreshBooks进行身份验证全部内容,希望文章能够帮你解决c# – 通过DotNetOpenAuth对FreshBooks进行身份验证所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。