1
votes

I have a desktop windows application that wants to use the intuit IPP QBO API 3.0 to interface with the quickbooks online to create invoice, customer, etc.

As the document said, I need to a add the app in my developer account. But when try to Create New QuickBooks API App, it didn't give the desktop app option. It asked me to fill all the url informations which really for an online web applicaiton.

Where to register the desktop app for the intuit IPP QBO API 3.0?

Update:

With all the helpful information provided in the answers, I ended up a small library DesktopIppOAuth to my project. The library uses OWIN to selfhost web api 2.0 and redirect the oauth callback to the library itself. By using that library I don't need to setup a separated site to receive the callback and get the token.

3

3 Answers

3
votes

OAuth is just a painful thing you need to get past. Once you figure it out you'll wonder what the fuss was all about.

I threw together a sample Windows Forms solution here. It's quick & dirty so go easy on me ;-)

You'll also need DevDefined.OAuth.dll which you can get the code for here.

Regarding Intuit, QBO, and desktop solutions: The app registration at Intuit doesn't know or care if your app is a desktop app. The only issue is if you want to be listed on their App Center. In that case you have to build a proper SaaS solution and go through Intuit's security review. For a single-user custom app, you can leave it in dev mode. Supposedly it's also possible to publish an unlisted mass-market app without going through all the formalities, but I haven't been through that process myself.

All new development for QB Online must use the QBO v3 REST API.

You do need some way to accept the callback from Intuit, but you only need a simple page that can grab the realmId and oauth_verifier from the query string and display them for the user. Let the user copy and paste these into the desktop app, which should save the securely. If you don't have a web site where you can do this, you can build one pretty cheaply (I'm partial to Windows Azure). I don't think it even needs to be secure - the verifier only works until it's used to get an access token, and you need the request token in order to use it.

See the discussion about how to process QBO API requests with DevDefined OAuth here: build a signature using devdefined

I haven't been as generous in these forums as many other people, but I see a lot of pain and confusion around OAuth and non-published apps, so I thought this might help a bit. I probably missed a few details so I hope others will add info as needed.

2
votes

According IPP's FAQ site -

What types of applications are supported with QuickBooks API?
QuickBooks API supports non-rich internet, SaaS apps that are accessed by users with a web browser.  Mobile extensions to these SaaS apps are also supported.

FAQ - https://developer.intuit.com/docs/0025_quickbooksapi/0058_faq

So you can see that desktop application is not supported in IPP's marketplace (apps.com)

If you create desktop application then there will be challenges while generating OAuth in the standard way. So you can try the following for this use case.

You can have an embedded browser/separate web app in desktop application, where you need to implement C2QB flow functionality(same as OAuth playground). Using that your app's end user will generate OAuth tokens corresponding to their QB account. You can store(encrypted) those tokens either in user's system or you can store those in your app's service backend. End users need to do it for the very first time. From the next time onwords they can simply use the previously stored OAuth tokens to interact with their QB account.

C2QB - https://developer.intuit.com/docs/0025_quickbooksapi/0010_getting_started/0020_connect/0010_from_within_your_app/implement_oauth_in_your_app

Thanks

1
votes

There is no way to register for a desktop app. You need to enter some test/non-specific urls in those fields for getting development tokens.

Then, you need to set these tokens in our sample apps- https://github.com/IntuitDeveloperRelations/ OR

on developer playground to generate the keys. Go to Manage My Apps->Your app> Test Connect To App

Set all these keys in your desktop app and then you can make calls to the QBO API.