Quickbooks 使用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

我正在将一个现有应用程序从QBXML转换为使用QBOE API V3的QuickBooks在线帐户。我已经成功地完成了OAuth,并使用DevDefined工具包获得了看起来有效的令牌/机密。我被oauth_签名的生成所困扰。所有文档都指向我使用Intuit.Ipp DLL,但我不能,因为它是写入.net 4.0 framework的,并且我的应用程序运行的服务器上只加载了2.0。我可以移动我的应用程序,但测试升级将使我超过截止日期(2014年4月16日)。有没有一种方法可以使用DevDefined或其他选项构建签名


该应用程序在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参数的构造函数。