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

Java 如何在不使用OAuth的情况下使用QuickBooks Online进行简单身份验证?,java,authorization,quickbooks,quickbooks-online,Java,Authorization,Quickbooks,Quickbooks Online,我想使用会计API(Java)对我的QuickBooks在线帐户进行身份验证,以便创建发票 我已经在另一个应用程序中成功地实现了这一点。在这种情况下,应用程序有一个前端接口,允许任何人登录到他们的帐户,所以我使用OAuth进行身份验证 在这种情况下,我只是在服务器上有一些代码,可以在QuickBooks帐户中创建发票,但这些代码是私有的,没有与之关联的接口。它是由一些只有我控制的业务逻辑触发的。为此,我创建了一个新的Intuit应用程序,它有自己的密钥 我还需要通过OAuth过程来验证我自己吗?

我想使用会计API(Java)对我的QuickBooks在线帐户进行身份验证,以便创建发票

我已经在另一个应用程序中成功地实现了这一点。在这种情况下,应用程序有一个前端接口,允许任何人登录到他们的帐户,所以我使用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个:
IAMCookieAuthorizer
oauthorizer
TicketAuthorizer


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

通常,您不必再次经历OAuth过程。您可以使用您提到的其他应用中的应用令牌。但是,由于您在developer.intuit.com上创建了一个新应用程序,因此您需要从该应用程序生成一个令牌,这不是什么大问题。您可以从developer.intuit站点的“测试连接到应用程序(OAuth)”下获取令牌

或者返回使用其他应用程序领域id/公司id及其令牌

一旦您有了令牌,您就可以在到期前30天(即180天)以编程方式续订它。因此,请保存令牌创建日期,以便您可以确定续订窗口并在该窗口中自动续订令牌


您可以通过查看了解OAuth的工作原理。

您所说的应用令牌是什么意思?在应用程序仪表板中,开发和生产选项卡都有各自的
app Token
Consumer Key
Consumer Secret
值,但OAuth登录时缺少的是
access Token
access Token Secret
值。我使用新应用程序(开发)的“测试连接到应用程序(OAuth)”选项成功连接到我的QB帐户,但我在任何地方都看不到任何访问令牌或访问令牌密钥。我已设法从intuit OAuth Playerd创建访问令牌和访问密钥,因此我将随时更新这些令牌和密钥。但我仍然无法让我的请求生效,因为我不知道我的应用程序的域ID是什么!!旧应用程序仪表板用于显示领域ID,但我在新仪表板中的任何位置都找不到它。我设法让它工作,但只能使用我的旧应用程序,因为我在保存的一些日志中发现了该应用程序的领域ID。在应用程序的开发版本中使用oauth令牌是否存在任何问题。我的意思是,180天到期和30天续约规则仍然适用吗?是的,开发代币是180天。领域ID的新名称是公司ID。领域ID仍在OAuth回调参数中使用。据您所知,是否可以从应用程序仪表板中找到公司ID?或者其他地方?在操场测试期间,我检查了HTTP请求/响应中的头和参数,尽管RealmID参数在其中,但它没有任何值。这看起来很愚蠢,因为领域/公司ID是一个完全静态的值,但我不能在仪表板的任何地方查看它(再也不能了!)。