我正在使用Intuit API开发一个使用QuickBooks集成的.NET(C#)应用程序。我用不同的QuickBooks数据创建了2个Intuit帐户,比如说A和B.
我连接并授权Intuit帐户A并在我的应用程序中创建一个客户端C1。然后我连接并授权B并在我的应用程序中创建另一个客户端C2。直到这一点,一切正常。在创建客户端时,我在数据库中保存了访问令牌,访问令牌密钥,密钥等oAuth信息。当我想编辑特定客户端时,请获取相应的信息。
(记住我的申请是在创建C2时最后授权的Intuit帐户B)
现在,此时,如果我转到与Intuit帐户A连接的客户端C1,并尝试获取quickbooks数据,而不使用“connect to intuit”按钮进行intuit的默认连接和授权过程,我“Unauthorized-401”错误,即使我在客户端创建期间提供了保存在本地数据库中的访问令牌,密钥,密钥等oAuth信息。一旦我触发API方法来获取数据,QuickBooks就会抛出错误。
我不希望我的应用程序每次尝试从不同的Intuit帐户获取数据时手动连接和授权Intuit帐户进程,因为有一个自动后台作业,每24小时后同步每个客户端的QuickBooks数据。无法使用该作业手动授权。
我在这里缺少什么?我该怎么办?我是否需要购买任何合作伙伴许可证?
答案 0 :(得分:0)
对于给定的apptoken,consumerKey和consumerSecret,只有特定QBO帐户的一个用户才具有有效的OAuth凭证。 如果该特定公司的第二个用户通过C2QB循环(OAuth握手)生成新的accessToken和accessSecret,则之前的令牌将失效。
每次最终用户访问您的应用时,都无需通过OAuth周期。 您可以在生成OAuth令牌时使用最终用户的SSO ID与DB中的有效OAuth令牌关联(使用C2QB按钮)。从下次开始,只需让他通过intuit的SSO流程,根据他的SSO标识获取OAuth凭证,并允许他使用之前保存的凭证访问他的数据。
由于
答案 1 :(得分:0)
对于公司文件的主管理员,除非您的应用程序将“连接到Quickbooks”(C2QB)用于同一领域,否则不能使令牌失效。只有这样才能使令牌无效。 请检查您是否将令牌保存在某个临时存储中,而不是删除/清除它可能导致令牌过期。 因为,两个QBO帐户/领域A和B以及管理员(C1和C2)没有关联,所以没有理由为B生成oauth令牌可能导致令牌到期A。