无法在golang中完成GitHub的oauth Web工作流程

时间:2015-01-22 07:49:54

标签: http github oauth go

我正在尝试在golang中实现GitHub的oauth-workflow并使用https://github.com/franela/goreq来执行http(s)请求。

有一个部分,其中GitHub会返回code,您必须POST code client_id client_secretpackage 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时,我使用相同的输入数据得到了正确的结果。

2 个答案:

答案 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。