【问题标题】:Authenticating QuickBooks API验证 QuickBooks API
【发布时间】:2016-04-10 23:03:11
【问题描述】:

我认为我不需要 OAuth

再说一次,我知道什么

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

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

没有基本的身份验证标头,请求正文中没有任何带有 API 令牌的内容,.. 什么都没有

点击提交时检查控制台不再有用。请求被发送到他们的后端服务器,在那里它执行真正的请求:

它甚至在正文中包含“apikey”、“apisecret”和“oauth”属性,这些属性都是空的——它就像端点甚至不需要身份验证一样。

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

401 未授权。所以需要一些身份验证。在page 将我链接回OAuth 并说我需要设置OAuth 之后,我继续搜索文档并发现除了page。为什么我需要设置 OAuth 以获取给我的信用卡号并将其交给 QuickBooks?

我什至尝试查看他们的示例应用程序。 “拿代码试驾”(https://developer.intuit.com/v2/ui#/emulator?workflow=ecommerce)完全没有价值。它只给了我一些关于如何处理身份验证的零想法的伪代码:

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

在这一点上,我几乎把我的头发扯掉了,所以我认为我需要有经验的人来指引我正确的方向。

【问题讨论】:

    标签: api authentication quickbooks quickbooks-online


    【解决方案1】:

    我认为我不需要 OAuth

    你会的。

    出于这个原因,认为我必须将它们重定向到 intuit.com 并强制它们通过 OAuth 提示似乎绝对是愚蠢的

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

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

    您存储从一次性 OAuth 弹出窗口进程返回的令牌,并将这些令牌用于所有未来的 HTTPS 请求。

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

    如果您熟悉/习惯于 Authorize.net 或其他 Web 服务,您可以在其中打开 Web 浏览器并访问网站并将密钥/API 令牌复制到您的代码中......这正是相同的过程除了,而不是您登录并手动复制/粘贴 API 令牌/密钥,您正在登录,OAuth 过程会自动以编程方式为您提供 API 令牌/密钥。

    【讨论】:

    • 我坐下来开始使用 PHPoAuthLib 在这里为您的 cmets 淘汰 OAuth 集成,并按照 their example 在我的应用程序获得授权后立即发出单个 API 请求,但是我可以切勿在未重新授权应用程序的情况下发出第二个请求。我存储了oauth_tokenoauth_verifierrealmId(由 QuickBooks 返回)并尝试重新使用它们但得到 401 Unauthorized :( 有什么想法吗?
    • 因为这个答案让我比以前更接近了,所以继续并将其标记为正确答案——将为我的新问题提出一个新问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    相关资源
    最近更新 更多