无法在 golang 中完成 GitHub 的 oauth Web 工作流程
Unable to complete oauth web workflow for GitHub in golang
我正在尝试在 golang 中为 GitHub 实施 oauth-workflow 并使用 https://github.com/franela/goreq 执行 http(s) 请求。
有一个部分,其中 GitHub returns 一个 code
并且您必须使用 [=12= 向 https://github.com/login/oauth/access_token 发出 POST
请求]、client_id
和 client_secret
.
package main
import "fmt"
import "github.com/franela/goreq"
type param struct {
code string
client_id string
client_secret string
}
func main() {
params := param {code: "XX", client_id:"XX", client_secret: "XX"}
req := goreq.Request{
Method : "POST",
Uri : "https://github.com/login/oauth/access_token",
Body : params,
}
req.AddHeader("Content-Type", "application/json")
req.AddHeader("Accept", "application/json")
res, _ := req.Do()
fmt.Println(res.Body.ToString())
}
它总是给 404
和 {"error":"Not Found"}
消息。
在使用 Python 时,我使用相同的输入数据得到了正确的结果。
你应该仔细检查你的 'client_secret' 和 'client_id'(必须是正确的,因为你得到了代码)是否正确,显然 Github returns HTTP 状态代码错误404
您正在生成空 JSON 对象。您的结构字段应以大写字母开头,以便 JSON 编码器能够对其进行编码。
type goodparam struct {
Code string `json:"code"`
ClientId string `json:"client_id"`
ClientSecret string `json:"client_secret"`
}
我正在尝试在 golang 中为 GitHub 实施 oauth-workflow 并使用 https://github.com/franela/goreq 执行 http(s) 请求。
有一个部分,其中 GitHub returns 一个 code
并且您必须使用 [=12= 向 https://github.com/login/oauth/access_token 发出 POST
请求]、client_id
和 client_secret
.
package main
import "fmt"
import "github.com/franela/goreq"
type param struct {
code string
client_id string
client_secret string
}
func main() {
params := param {code: "XX", client_id:"XX", client_secret: "XX"}
req := goreq.Request{
Method : "POST",
Uri : "https://github.com/login/oauth/access_token",
Body : params,
}
req.AddHeader("Content-Type", "application/json")
req.AddHeader("Accept", "application/json")
res, _ := req.Do()
fmt.Println(res.Body.ToString())
}
它总是给 404
和 {"error":"Not Found"}
消息。
在使用 Python 时,我使用相同的输入数据得到了正确的结果。
你应该仔细检查你的 'client_secret' 和 'client_id'(必须是正确的,因为你得到了代码)是否正确,显然 Github returns HTTP 状态代码错误404
您正在生成空 JSON 对象。您的结构字段应以大写字母开头,以便 JSON 编码器能够对其进行编码。
type goodparam struct {
Code string `json:"code"`
ClientId string `json:"client_id"`
ClientSecret string `json:"client_secret"`
}