如何为 OAuth1.0a 设置授权 headers

How to set authorization headers for OAuth1.0a

我对 restAPI 非常熟悉,但是这个让我有点头疼。我正在尝试使用此文档 https://developer.xero.com/documentation/oauth2/migrate.

将我的 OAuth 1.0 令牌迁移到 OAuth 2.0 令牌

要求:

POST https://api.xero.com/oauth/migrate
Content-Type: application/json
Authorization: OAuth oauth_consumer_key="your_consumer_key", oauth_token="your_access_token", 
    oauth_signature_method="RSA-SHA1", oauth_signature="your_signature", oauth_timestamp="1456175435", 
    oauth_nonce="83fd12eb-f578-4403-bd55-247b66efa11a", oauth_version="1.0"

Body: {
    "scope":"your_oauth_2_scopes + offline_access",
    "client_id":"your_app_client_id",
    "client_secret":"your_app_client_secret"
}

我正在尝试在 GO 中编写一个脚本,它将发出 POST 请求、获取数据并更新我们的数据库。

现在让我感到困惑的是授权 Header。

如何填写所需信息? 更具体地说,oauth-signature、oauth-timestamp 和 oauth_nonce。我使用 OAuth1.0a 的经验很少,很想了解流程。

谢谢!

编辑:尝试使用这个库https://godoc.org/github.com/gomodule/oauth1/oauth#example-Client-SetAuthorizationHeader

OAuth1.0a 签名是一组 key-value 对,用您的私钥签名。这个示例迁移应用程序应该让您了解构建签名需要采取的步骤,即使它不是 Go:OAuth1.0a => OAuth 2 token migration example

还有一个 Xero GoLang SDK,您可以深入研究它以帮助获得授权码:xerogolang

随机数是一个随机 single-use 字符串,在您的 header 和签名中需要相同。时间戳是当前 date-time,自纪元以来的秒数,在您的 header 和签名中也需要相同。