【发布时间】:2021-09-01 02:35:21
【问题描述】:
我在 QuickBooks 开发者门户中成立了一家公司,并成功创建了 OAuth 令牌(我可以刷新 as specified in this answer)。因此,与大多数这些问题不同,这不是关于 OAuth...我在这里使用的是纯 PHP,因为由于技术原因我不能使用 SDK。
获得 OAuth 令牌后,我尝试从 API 操场执行下一个 API 调用,以获取公司信息。我用这段代码有效地调用了 QB API:
($query 是 /v3/company/<companyID>/companyinfo/<companyID> (companyID 是来自 API 游乐场的“领域 ID”),$base 是沙盒 URL(与标题中的“沙盒基础 URL”相同),$access_tokens["access"] 是OAuth 访问令牌;$url 是 https://${base}${query})
$headers = array(
"GET " . $query . " HTTP/2",
"Host: " . $base,
"Accept: application/json",
"Authorization: Bearer " . $access_tokens["access"],
"Production Base URL: https://quickbooks.api.intuit.com",
"Sandbox Base URL: https://sandbox-quickbooks.api.intuit.com"
);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
curl_setopt($curl, CURLOPT_HEADER, true);
$output = curl_exec($curl);
调用后$output的值为:
HTTP/2 400
date: Tue, 31 Aug 2021 14:42:55 GMT
content-type: text/plain
content-length: 11
server: envoy
Bad Request
请求标头(由 QB 服务器通过 curl_getinfo 返回)是:
GET /v3/company/4...0/companyinfo/4...0 HTTP/2
Host: sandbox-quickbooks.api.intuit.com
accept: application/json
authorization: Bearer e...Q
production base url: https://quickbooks.api.intuit.com
sandbox base url: https://sandbox-quickbooks.api.intuit.com
(授权令牌和公司ID已被剪切)
如果我直接在浏览器中调用 URL,我会按预期收到 401(身份验证错误),因此我假设 OAuth 部分有效(正如我所说,我可以成功检索访问令牌并刷新它)。我只是想知道是否还有什么我做错了导致 QB API 调用失败?
【问题讨论】:
标签: php http curl quickbooks intuit