【问题标题】:How to properly add OAuth headers for a QuickBooks API call in Google Go如何在 Google Go 中为 QuickBooks API 调用正确添加 OAuth 标头
【发布时间】:2013-05-18 23:26:28
【问题描述】:

我只是想获得一个概念证明,以测试与 QB Online 帐户的 QB api 的连接。我从来没有像这样尝试过建立 OAuth 连接,所以我不确定我做对了。这是我到目前为止所拥有的,它发出了请求,但我收到了从 QB 的服务器返回的 401 错误(未经授权的 OAuth 令牌:signature_invalid401SERVER):

client := &http.Client{}
if req, err := http.NewRequest("GET", "https://qbo.intuit.com/qbo1/resource/customers/v2/717594130", nil); err != nil {
    //handle error
} else {
    req.Header.Add("Authorization", "OAuth oauth_token=\"MY_TOKEN\",oauth_nonce=\"7758caa9-e1f4-4fa1-84c5-5759fd513a88\",oauth_consumer_key=\"MY_KEY\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1369259523\",oauth_version=\"1.0\",oauth_signature=\"MY_SIG\"")
    if resp, err := client.Do(req); err != nil {
        //handle error
    } else {
        defer resp.Body.Close()
        contents, err := ioutil.ReadAll(resp.Body)
        if err != nil {
            //handle error
        }
        myOutput := string(contents)
    }
}

问题可能出在我的 QB 帐户设置上吗? “主机名域”有一个设置,我认为它可能只允许来自我在那里输入的内容(当前是 intuit.com)的连接。如果是这种情况,我该如何设置它以允许来自本地主机上的开发应用程序的连接?

【问题讨论】:

    标签: google-app-engine oauth go quickbooks-online


    【解决方案1】:

    您是否使用正确的 OAuth 算法来生成签名?

    您能否发布一个显示传出签名/OAuth 标头的实际请求/响应,以及您从 Intuit 返回的响应?

    您的代码没有显示任何这些,而且看起来您使用的不是 Intuit DevKit,所以这可能是开始的地方。我的猜测是您发送的签名无效。我会强烈建议您找到一个 OAuth 库,并使用该 OAuth 库,而不是尝试推出您自己的 OAuth 算法。

    就目前而言:

    问题可能出在我的 QB 帐户设置上吗? “主机名域”有一个设置,我认为它可能只 允许来自我在那里输入的内容(目前是 intuit.com)。

    不是可能是问题...但是除了简单的测试请求之外,您需要将其设置为您的主机名。如果它是本地开发盒,您可以输入本地开发盒主机名(例如 http://localhost/http://192.168.1.2/ 或类似的名称 - 无论您使用什么 URL 访问您的开发盒)

    【讨论】:

    • 对于没有“真实”主机名或互联网访问权限的开发工具箱,我经常使用pagekite.net 来获取适当的外部可访问主机名。
    • 如果您需要一个可从外部访问的主机名,PageKite.net 是一个很好的解决方案。但请注意,对于这种特殊的 OAuth 情况,您确实不需要需要外部可访问的主机名。
    • 谢谢你,Keith,在发布问题后,我确实找到了一个为 Go 编写的合适的 OAth 库,我现在正在尝试使用它。那里仍然有问题,但这是另一回事。我是 OAuth 的新手,我最初的问题似乎已经很天真了,哦,好吧。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-01-15
    • 2017-05-25
    • 1970-01-01
    • 2020-10-02
    • 2012-02-26
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多