如何在不使用 OAuth 的情况下使用 QuickBooks Online 进行简单身份验证?

How to do simple authentication with QuickBooks Online without using OAuth?

我想使用会计 API (Java) 通过我的 QuickBooks Online 帐户验证自己的身份,以便我可以创建发票。

我已经在另一个应用程序中成功地做到了这一点。在那种情况下,该应用程序有一个前端界面,允许任何人登录他们的帐户,所以我使用 OAuth 进行身份验证。

在这种情况下,我的服务器上只有一些代码可以在我的 QuickBooks 帐户中创建发票,但该代码是私有的,没有与之关联的界面。它是由于某些只有我控制的业务逻辑而触发的。为此,我创建了一个带有自己密钥的新 Intuit 应用程序。

我还需要通过 OAuth 流程来验证自己吗?如果我这样做,这似乎是不必要的。例如,要使用 OAuth 进行身份验证,我有以下内容:

OAuthAuthorizer oauth = new OAuthAuthorizer(
    consumerKey, consumerSecret, accessToken, accessTokenSecret);

Context context = new Context(oauth, appToken, ServiceType.QBO, realmID);
DataService service = new DataService(context);

Context 构造函数的第一个参数应该是一个实现 IAuthorizer 接口的对象,其中显然有 3 个:IAMCookieAuthorizerOAuthAuthorizerTicketAuthorizer

TicketAuthorizer 包含一个名为 String 的票证,但这是什么,我可以使用它吗?我只想在锁定的环境中进行简单的身份验证。

通常情况下,您不必再次执行 OAuth 流程。您可以使用您提到的其他应用程序中的应用程序令牌。但是由于您在 developer.intuit.com 创建了一个新应用程序,您将需要从该应用程序生成一个令牌,这不是什么大问题。您可以从 "Test connect to app (OAuth)".

下的 developer.intuit 站点获取令牌

或者返回使用其他应用领域 id/company id 及其令牌。

获得令牌后,您可以在到期前 30 天(即 180 天)以编程方式续订它。因此,保存令牌创建日期,以便您可以确定续订 window 并自动续订 window.

中的令牌

您可以通过 sample app 了解 OAuth 的工作原理。