我正在将现有的应用程序从QBXML转换为使用QBOE API V3来创建QuickBooks Online帐户。我已设法完成OAuth并使用DevDefined工具包获得看似有效的令牌/秘密。我被困在oauth_signature的一代。所有文档都指向我使用Intuit.Ipp DLL但是我不能,因为它写入.net 4.0框架,我的应用程序运行的服务器只加载了2.0。我可以移动我的应用程序,但测试升级将在截止日期(2014年4月16日)之后让我。有没有办法使用DevDefined或其他选项构建签名?
该应用程序在带有ASP.VB的IIS 6.0,DotNet Framework 2.0上运行。
答案 0 :(得分:1)
截止日期是4/16吗?我没有看到任何地方宣布的。我以为是3/15。
我还没有在.NET 2.0上对此进行过测试,但这只是使用DevDefined而没有任何开销。它将为您处理签名和http请求。
using System.Text;
using DevDefined.OAuth.Consumer;
using DevDefined.OAuth.Framework;
// etc...
public void doGet()
{
IOAuthSession session = CreateSession();
string resp = session.Request().Get().ForUrl("https://quickbooks.api.intuit.com/v3/company/"
+ realmId + "/query?query=select * from customer where DisplayName='" + name + "'").ToString();
}
public void doPost(string Name)
{
IOAuthSession session = CreateSession();
string reqBody = "<Customer xmlns=\"http://schema.intuit.com/finance/v3\" domain=\"QBO\" sparse=\"false\">";
reqBody += "<DisplayName>" + Name + "</DisplayName>";
reqBody += "</Customer>";
byte[] bytes = Encoding.UTF8.GetBytes(reqBody);
session.ConsumerContext.UseHeaderForOAuthParameters = true;
IConsumerRequest req = session.Request().WithRawContentType("application/xml").WithRawContent(bytes);
req = req.WithAcceptHeader("application/xml");
req = req.ForUrl("https://quickbooks.api.intuit.com/v3/company/"
+ realmI + "/customer");
string resp = req.Post().ToString();
}
private IOAuthSession CreateSession()
{
OAuthConsumerContext consumerContext = new OAuthConsumerContext
{
ConsumerKey = Properties.Settings.Default.consumerKey,
ConsumerSecret = Properties.Settings.Default.consumerSecret,
SignatureMethod = SignatureMethod.HmacSha1
};
IOAuthSession session = new OAuthSession(consumerContext);
session.AccessToken = myAccessToken;
return session;
}