【问题标题】:Getting "Unauthorized-401" Error in .NET while accessing quickBooks data through Intuit API通过 Intuit API 访问 quickBooks 数据时在 .NET 中出现“Unauthorized-401”错误
【发布时间】:2014-07-08 17:22:55
【问题描述】:

我正在使用 Intuit API 开发一个带有 QuickBooks 集成的 .NET(C#) 应用程序。我用不同的 QuickBooks 数据创建了 2 个 Intuit 帐户,比如 A 和 B。

我连接并授权 Intuit 帐户 A 并在我的应用程序中创建一个客户端 C1。然后我连接并授权 B 并在我的应用程序中创建另一个客户端 C2。到目前为止,一切正常。创建客户端时,我将访问令牌、访问令牌秘密、密钥等 oAuth 信息保存在数据库中。并在我想编辑特定客户端时获取相应的信息。

(记住我的应用程序是在创建 C2 时最后一次授权 Intuit 帐户 B)

现在,此时,如果我去与 Intuit 帐户 A 连接的客户端 C1,并尝试获取 quickbooks 数据,而不使用“连接到 intuit”按钮通过默认的连接和授权过程,它给出我出现“Unauthorized-401”错误,即使我提供了 oAuth 信息,如访问令牌、秘密、密钥等,这些信息在客户端创建期间保存在本地数据库中。一旦我触发 API 方法来获取数据,QuickBooks 就会抛出错误。

我不希望我的应用程序每次尝试从不同的 Intuit 帐户获取数据时手动连接和授权 Intuit 帐户进程,因为有一个自动后台作业,每 24 小时后同步每个客户的 QuickBooks 数据。无法手动授权该作业。

我在这里缺少什么?我应该怎么办?我需要购买任何合作伙伴许可证或其他东西吗?

【问题讨论】:

    标签: c# api oauth intuit-partner-platform


    【解决方案1】:

    对于给定的 apptoken、consumerKey 和 consumerSecret,只有特定 QBO 帐户的一个用户将拥有有效的 OAuth 凭据。 如果该特定公司的第二个用户通过 C2QB 周期(OAuth 握手)生成新的 accessToken 和 accessSecret,则之前的令牌将失效。

    最终用户访问您的应用时,无需每次都经过 OAuth 周期。 当最终用户生成 OAuth 令牌(使用 C2QB 按钮)时,您可以首次将最终用户的 SSO id 与 DB 中的有效 OAuth 令牌相关联。从下一次开始,让他通过 intuit 的 SSO 流程,根据他的 SSO 标识符获取 OAuth 凭据,并允许他使用他之前保存的凭据访问他的数据。

    谢谢

    【讨论】:

      【解决方案2】:

      对于公司文件的主管理员,除非您的应用将 Connect to Quickbooks(C2QB) 用于同一领域,否则令牌不能失效。只有这样才能使令牌无效。 请检查您是否将令牌保存在某个临时存储中,而不是删除/清理它,这可能导致令牌过期。 由于两个 QBO 帐户/领域 A 和 B 以及管理员(C1 和 C2)不相关,因此没有理由为 B 生成 oauth 令牌会导致 A 的令牌过期。

      【讨论】:

        猜你喜欢
        • 2019-03-16
        • 1970-01-01
        • 2012-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-21
        • 2012-02-27
        相关资源
        最近更新 更多