我正在尝试在golang中实现GitHub的oauth-workflow并使用https://github.com/franela/goreq来执行http(s)请求。
有一个部分,其中GitHub会返回code
,您必须POST
code
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
1}}。
{"error":"Not Found"}
始终向{{1}}提供{{1}}消息。 使用Python时,我使用相同的输入数据得到了正确的结果。
答案 0 :(得分:3)
您正在生成空的JSON对象。您的结构字段应以大写字母开头,以便JSON编码器能够对它们进行编码。
type goodparam struct {
Code string `json:"code"`
ClientId string `json:"client_id"`
ClientSecret string `json:"client_secret"`
}
请参阅this in action。
答案 1 :(得分:0)
你应该仔细检查你的client_secret'和' client_id' (必须是正确的,因为你得到代码)如果它是正确的,显然Github如果错误则返回HTTP状态代码404。