登录
首页 >  Golang >  Go问答

为什么我的 Coinbase 请求签名被视为无效?

来源:stackoverflow

时间:2024-02-17 18:27:25 354浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《为什么我的 Coinbase 请求签名被视为无效?》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

根据 coinbase pro api 文档:

cb-access-sign 标头是通过使用预哈希字符串时间戳 + 上的 base64 解码密钥创建 sha256 hmac 生成的 method + requestpath + body(其中+表示字符串连接) 并对输出进行 base64 编码。时间戳值与 cb-access-timestamp 标头。 body 为请求正文字符串,如果没有请求则省略 主体(通常用于 get 请求)。 该方法应该是大写。

我从一个更好的程序员那里借用了一个签名函数,并为其提供如下内容:

1619383731post/reports{{"end_date":"2021-01-02t11:59:59z","start_date":"2020-01-01t00:00:00z","type":"account"}}

但不断从 coinbase 获得无效签名。

签名函数参考:

// sign
func (e *exchange) sign(msg string) string {
    key, err := base64.StdEncoding.DecodeString(e.http.secret)
    if e.checkErr(err) {
        return "bad_sig"
    }
    signature := hmac.New(sha256.New, key)
    _, err = signature.Write([]byte(msg))
    if e.checkErr(err) {
        return "bad_sig"
    }
    return base64.StdEncoding.EncodeToString(signature.Sum(nil))
}

我哪里搞砸了?


正确答案


事实证明,直接使用 req.Body 是罪魁祸首。为什么我不知道,我需要找出一些东西,但是读入 []byte 然后转换为字符串可以解决部分问题。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《为什么我的 Coinbase 请求签名被视为无效?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>