Quickbooks 使用devdefined生成签名
我正在将一个现有应用程序从QBXML转换为使用QBOE API V3的QuickBooks在线帐户。我已经成功地完成了OAuth,并使用DevDefined工具包获得了看起来有效的令牌/机密。我被oauth_签名的生成所困扰。所有文档都指向我使用Intuit.Ipp DLL,但我不能,因为它是写入.net 4.0 framework的,并且我的应用程序运行的服务器上只加载了2.0。我可以移动我的应用程序,但测试升级将使我超过截止日期(2014年4月16日)。有没有一种方法可以使用DevDefined或其他选项构建签名Quickbooks 使用devdefined生成签名,quickbooks,intuit,Quickbooks,Intuit,我正在将一个现有应用程序从QBXML转换为使用QBOE API V3的QuickBooks在线帐户。我已经成功地完成了OAuth,并使用DevDefined工具包获得了看起来有效的令牌/机密。我被oauth_签名的生成所困扰。所有文档都指向我使用Intuit.Ipp DLL,但我不能,因为它是写入.net 4.0 framework的,并且我的应用程序运行的服务器上只加载了2.0。我可以移动我的应用程序,但测试升级将使我超过截止日期(2014年4月16日)。有没有一种方法可以使用DevDefin
该应用程序在IIS 6.0、DotNet Framework 2.0和ASP.VB上运行 现在是4/16吗?我在任何地方都没有看到这个消息。我以为是3/15 我还没有在.NET2.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;
}
使用System.Text;
使用DevDefined.OAuth.Consumer;
使用DevDefined.OAuth.Framework;
//等等。。。
公共无效数据集()
{
IOAuthSession会话=CreateSession();
string resp=session.Request().Get().ForUrl(“https://quickbooks.api.intuit.com/v3/company/"
+realmId+“/query?query=从客户中选择*,其中DisplayName='“+name+'”)。ToString();
}
公共void doPost(字符串名称)
{
IOAuthSession会话=CreateSession();
字符串reqBody=“”;
reqBody+=“”+名称+“”;
reqBody+=”;
byte[]bytes=Encoding.UTF8.GetBytes(reqBody);
session.ConsumerContext.UseHeaderForOAuthParameters=true;
IConsumerRequest req=session.Request()。WithRawContentType(“应用程序/xml”)。WithRawContent(字节);
req=req.WithAcceptHeader(“应用程序/xml”);
req=req.ForUrl(“https://quickbooks.api.intuit.com/v3/company/"
+realmI+“/客户”);
字符串resp=req.Post().ToString();
}
私有IOAuthSession CreateSession()
{
OAuthConsumerContext consumerContext=新的OAuthConsumerContext
{
ConsumerKey=Properties.Settings.Default.ConsumerKey,
ConsumerCret=Properties.Settings.Default.ConsumerCret,
SignatureMethod=SignatureMethod.HmacSha1
};
IOAuthSession会话=新的OAuthSession(consumerContext);
session.AccessToken=myAccessToken;
返回会议;
}
我的错误。。。据我所知,它仍然是3/16,只是在16小时的编程之后写下了这个。。。看起来不错,我来试试看。迈克,谢谢你的帮助。。。我仍然有一个小问题,可能是缺乏理解。更多。。。您给我的示例代码包括IOAuthSession session=newOAuthSession(consumerContext);但是,此函数不接受单个参数。我错过了什么…也许你有一个旧版本?位于的当前DevDefined.OAuth库具有具有单个IOAuthConsumerContext参数的构造函数。