正在验证 QuickBooks API

Authenticating QuickBooks API

我认为我不需要 OAuth

话说回来,我知道什么

我只想获取某人的信用卡信息并向他们收费。我不会访问其他人的 QuickBooks 帐户(只有我自己的帐户),并且我不会尝试访问除他们输入我的表格之外的任何其他个人信息。出于这个原因,认为我必须将他们重定向到 intuit.com 并通过 OAuth 提示强制他们(他们甚至会授权什么帐户?他们可能没有 QuickBooks 帐户)似乎绝对愚蠢

我花了最后一个小时阅读了 QuickBook 的 API 文档,我 运行 转了一圈,发现整件事完全令人困惑。每个引用特定 API 端点的页面都没有提及身份验证——只有 header、查询参数和请求 body 是预期的。 API 浏览器在他们的示例中没有显示任何形式的身份验证:

无基本身份验证 header,请求 body 中没有任何内容,带有 API 令牌,.. 没有任何内容

在点击提交的同时检查控制台没有任何帮助。请求被发送到他们的 back-end 服务器,在那里它执行 real 请求:

它甚至包括 body 中的 "apikey"、"apisecret" 和 "oauth" 属性,这些属性都是空的——它的行为就像端点甚至不需要身份验证。

出于愚蠢的好奇心,我尝试在没有身份验证的情况下发出请求,看看会发生什么:

401 未授权。所以需要一些认证。我继续搜索文档,只找到 page after page 将我链接回 OAuth 并说我需要设置 OAuth。为什么我需要设置 OAuth 以获取给我的信用卡号并将其交给 QuickBooks?

我什至尝试查看他们的示例应用程序。 "take the code for a test drive" (https://developer.intuit.com/v2/ui#/emulator?workflow=ecommerce) 完全没有价值。它只给了我一些 pseudo-code 对如何处理身份验证零想法:

我什至查看了 the actual code,但没有看到他们提供 API 密钥或秘密密钥的任何地方。

在这一点上我几乎是在胡说八道,所以我想我需要有经验的人来指导我正确的方向。

I don't believe I need OAuth

是的。

For this reason it seems absolutely asinine to think that I'd have to redirect them to intuit.com and force them through an OAuth prompt

您误解了 OAuth 是什么以及它是如何使用的。

OAuth 用于获取您的身份验证令牌,以便您的公司可以向 Intuit 进行身份验证并识别自己,以便您可以向客户的信用卡收费。您将被重定向到 Intuit 的网站以验证一次,并且仅一次,然后再也不会。

您存储从一次性 OAuth 弹出窗口window 过程中获得的令牌,并将它们用于所有未来的 HTTPS 请求。

最终用户(即您的客户)不会被重定向。

如果您 familiar/used 使用 Authorize.net 之类的东西或其他网络服务,您可以在其中打开网络浏览器并访问网站并将秘密 key/API 令牌复制到您的代码...这是完全相同的过程 除了 而不是您登录并手动 copy/pasting 和 API token/key,您正在登录OAuth 进程自动以编程方式为您提供 API token/key。