无法在 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_idclient_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"`
}

this in action