【问题标题】:API response Status code 400 while calling quickbooks api调用quickbooks api时API响应状态码400
【发布时间】:2021-02-13 00:00:13
【问题描述】:

所以这是我从 Quickbooks 服务器获取 OAUTH2 令牌的函数:

app.get('/callback', function (req, res) {
    oauthClient
        .createToken(req.url)
        .then(function (authResponse) {
            oauth2_token_json = JSON.stringify(authResponse.getJson(), null, 2);
            console.log("Token:", oauth2_token_json)
            newToken = oauth2_token_json;
            oauthClient.setToken(newToken);
            res.send(newToken);
        })    
});

现在,我在这里调用 API 来推送新客户,但它以状态码 400 进行响应。这是 Quickbooks 库的一个函数,我们只需添加正文和回调函数即可直接调用 API。我也设置了参数,你可以在代码中看到

.then(
                qbo = new QuickBooks('ABReS9hFdUzNlD8Np17ufW8WU5xLyL0M0rv3HvekbXJdZUiWzi',
                            'Uy9NXu2fKmumP3JoCrxKxKugzLkdHhi8Ca00GSBz',
                            `${newToken}`,
                            false, // no token secret for oAuth 2.0
                            '4620816365092507370', // the company name or id provided by Quickbooks
                            true, // use the sandbox?
                            true, // enable debugging?
                            null, // set minorversion, or null for the latest version
                            '2.0', //oAuth version
                            null)
              .createCustomer({
                  "FullyQualifiedName": "King Groceries", 
                  "PrimaryEmailAddr": {
                    "Address": "jdrew@myemail.com"
                  }, 
                  "DisplayName": "King's Groceries", 
                  "Suffix": "Jr", 
                  "Title": "Mr", 
                  "MiddleName": "B", 
                  "Notes": "Here are other details.", 
                  "FamilyName": "King", 
                  "PrimaryPhone": {
                    "FreeFormNumber": "(555) 555-5555"
                  }, 
                  "CompanyName": "King Groceries", 
                  "BillAddr": {
                    "CountrySubDivisionCode": "CA", 
                    "City": "Mountain View", 
                    "PostalCode": "94042", 
                    "Line1": "123 Main Street", 
                    "Country": "USA"
                  }, 
                  "GivenName": "James"
                }, function(err, customer){
                  console.log(customer)
                })
            )

当我发出请求时,它会访问正确的 URL。 ClientID 和 ClientSecret 完全正确。我不明白为什么我会收到此状态码。我已经更改了我正在使用的沙箱。我删除了旧沙箱并创建了一个新沙箱。谁能解释我该如何解决这个问题?

【问题讨论】:

    标签: java jquery node.js api backend


    【解决方案1】:

    400 表示您发送了服务器拒绝处理的请求:

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400

    它还说你不应该在不修改请求的情况下重复。

    有什么问题?可能是几件事:

    Content-Type: ... 标头丢失/错误,可能是 Accept: ... 标头,或者您可能传递了服务器无法解码的无效数据。

    如果可以的话,您需要来自服务器的错误消息。也许您也可以记录错误并查看它是否为您提供更多信息。

    【讨论】:

    • 先生,我通过它调用它并将其设置为“application/json”,它仍然给了我同样的错误。我不知道为什么
    • 服务器在某处返回错误,您应该能够检查它。您需要执行此操作以获取错误的详细信息。否则你在猜测。 .createCustomer 应该给你一个方法来捕捉错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多