猿问

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

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


有一个部分,GitHub 返回 a code,您必须使用,和POST向https://github.com/login/oauth/access_token发出请求。codeclient_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 时,我使用相同的输入数据获得了正确的结果。


回首忆惘然
浏览 153回答 2
2回答

汪汪一只猫

您正在生成空的 JSON 对象。您的结构字段应以大写字母开头,以便 JSON 编码器能够对其进行编码。type goodparam struct {    Code         string `json:"code"`    ClientId     string `json:"client_id"`    ClientSecret string `json:"client_secret"`}看到这个在行动。

神不在的星期二

你应该仔细检查你的'client_secret'和'client_id'(必须是正确的,因为你得到了代码)如果它是正确的,显然Github如果错误则返回HTTP状态代码404。
随时随地看视频慕课网APP

相关分类

Go
我要回答