我正在尝试生成一个令牌,以便我可以进行单腿 Oauth 1 API 调用,但我很难理解如何在 Golang 中执行此操作。
我也找不到包裹。希望有人能帮助我。
我尝试让它在 Postman 中工作,效果很好。
req.Header.Add("Authorization", "OAuth oauth_consumer_key=\"xxxx\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1712582585\",oauth_nonce=\"xxxx\",oauth_version=\"1.0\",oauth_signature=\"xxxx\"")
但现在我需要将其翻译成Golang。我拥有的数据是 authentication_key 和 authentication_secret。
这就是我调用 API 所需的全部内容。
希望有人可以帮助我如何使用正确的标志创建请求。
我试图找到软件包,但据我所知,没有一个软件包支持单腿 OAuth 1 调用。
编辑:
在 Postman 的“授权”选项卡中,我选择“Oauth 1”。在请求标头中,我填写的只是 Consumer Key 和 Consumer Secret。仅此而已!
我只是不知道如何将所有内容转换为签名版本。这就是邮递员创造的:
$request->setHeader(array(
'Authorization' => 'OAuth oauth_consumer_key="xxx",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1712730107",oauth_nonce="TvB9wvmwPL0",oauth_version="1.0",oauth_signature="tqyvNHstpQw4Zk%2Ba8r5PXIEetqk%3D"'
));
规范规定每个请求都需要签名:
所有令牌请求和受保护资源请求必须由消费者签名并由服务提供商验证。
https://oauth.net/core/1.0/#signing_process
如果没有任何现有的软件包可以做到这一点,您必须遵循规范文档并编写自己的软件包。
在Go中生成hmac sha1签名的代码可以在这个问题中找到:Go Hmac SHA1生成与Java中的Hmac SHA1不同的哈希
棘手的部分是为其组装正确的“输入”,因为您必须首先以正确的顺序放置请求参数并对其进行正确的编码。所有这些都在规范文档中列出。