【问题标题】:How do I authenticate/authorize myself to Quickbooks API?如何对 Quickbooks API 进行身份验证/授权?
【发布时间】:2014-07-10 01:50:51
【问题描述】:

我想在我的应用程序中联系 Quickbooks 以创建一些发票。我可以在生成临时 AccessToken 和 AccessTokenSecret 但它们过期时执行此操作。如何可靠且重复地调用 Quickbooks API?

注意:从我的应用程序访问数据的“用户”可以被视为“系统”。我正在使用 Quickbooks API 来简化/自动化个人工作流程。

string accessToken = "temporaryAccessToken";  //this expires
string accessTokenSecret = "temporaryAccessTokenSecret";  //this expires
string consumerKey = "myConsumerKey";
string consumerSecret = "myConsumerSecret";

m_OAuthRequestValidator = new OAuthRequestValidator(
accessToken, accessTokenSecret, consumerKey, consumerSecret);

string appToken = "myAppToken";
string companyID = "myCompanyID";
ServiceContext context = new ServiceContext(appToken, companyID, IntuitServicesType.QBD, m_OAuthRequestValidator);

DataService service = new DataService(context);

var customer = new Customer();
customer.GivenName = "Scout";
customer.FamilyName = "Berman";

Customer resultCustomer = service.Add(customer) as Customer;

【问题讨论】:

  • 使用 C2QB 按钮生成的令牌在 180 天之前不会过期,除非同一用户(主管理员)再次使用 C2QB 按钮,从而生成新令牌或通过调用 Reconnect api 更新令牌。将与用户对应的令牌保存在您的永久存储中,并跟踪知道令牌到期日期的天数。

标签: c# quickbooks intuit-partner-platform quickbooks-online intuit


【解决方案1】:

这在Intuit's documentation 中有详细记录。

你基本上有两种选择:

1.如果您正在构建 SaaS 应用:

阅读有关implementing OAuth in your application 的部分。它是普通的OAuth,添加了几个按钮小部件以将 Intuit 的品牌推向人们。

基本上,您在标头中嵌入一个 javascript script 标记,该标记会引入 Intuit 的 Javascript 库,添加对 Intuit 的 Javascript setup() 方法的调用,然后在您的网页中放置一个自定义 HTML 标记。这为您提供了一个漂亮漂亮的“连接到 QuickBooks”按钮。

当您单击该按钮时,它会启动标准 OAuth 流程,为您提供长期(6 个月)的访问令牌。将令牌存储在您的应用中,以便您可以随时使用这些 OAuth 令牌进行调用。

2。如果您只是构建一次性供您个人使用:

您可以使用 Intuit 的 Playground 工具获得 6 个月的代币:

在任何一种情况下:

您可以在 renew the token 到期日期后的 30 天内对其进行 REST API 调用(例如,您可以继续扩展它以使其永远有效)。

【讨论】:

  • “在您的应用程序中实现 OAuth”链接现在是 404
  • “更新令牌”链接也是404
  • 我遇到的问题在 #1 的底部。我有一个成功的连接,但是我如何获取返回的数据。我显然错过了一些东西。
【解决方案2】:

您可以生成与您的目标QB帐户对应的accessToken和accessSecret。

https://appcenter.intuit.com/Playground/OAuth/IA

OAuth tokens are valid for 180 days。您无需在每次调用中重新进行身份验证。

如果您想知道它在成熟的 SaaS 中是如何工作的,那么您可以参考以下 JAVA 示例应用程序。 https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/sample_code/spring_sample_app_for_quickbooksapi

谢谢

【讨论】:

    【解决方案3】:

    好吧,您可以在每次调用时重新进行身份验证,或者,您可以创建一个计时器事件,该事件每分钟触发一次,并保持连接打开。

    【讨论】:

    • 你能详细说明一下吗?我正在通过 IPP 网站获取我的访问密钥并使用新值更新配置。每次通话都重新进行身份验证是什么意思?
    • 好吧,我对 QB API 不是很熟悉,但如果你有登录方法 *authenticate),可能还有注销。如果是这种情况,您始终可以在执行操作之前登录,并在操作结束时注销。但同样,我不是 QB API 方面的专家。
    猜你喜欢
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多