go - 我无法使用以下代码检索访问 token

标签 go

func handler(w http.ResponseWriter, r *http.Request) {
    t := &oauth.Transport{Config: config}
    c := r.FormValue("code")
    token, err := t.Exchange(c)
    fmt.Println("token: ", token, "\nerr: ", err)
}

错误:

token:  <nil> 
err:  OAuthError: updateToken: Unexpected HTTP status 400 Bad Request

最佳答案

你用goauth2吗?包,哪个被弃用了?如果是这样你可以试试golang.org/x/oauth2相反

package main

import (
    "log"
    "net/http"

    "code.google.com/p/google-api-go-client/youtube/v3"

    "golang.org/x/oauth2"
    "golang.org/x/oauth2/google"
)

// variables used during oauth protocol flow of authentication
var (
    code  = ""
    token = ""
)

var oauthCfg = &oauth2.Config{
    ClientID:     "...",
    ClientSecret: "...",
    RedirectURL:  "http://localhost:8888/oauth2callback",
    Scopes: []string{
        youtube.YoutubeScope, //e.g.
    },
    Endpoint: google.Endpoint,
}

func main() {

    http.HandleFunc("/", mainHander)

    http.HandleFunc("/oauth2callback", callbackHandler)

    http.ListenAndServe(":8888", nil)
}

func mainHander(w http.ResponseWriter, r *http.Request) {
    url := oauthCfg.AuthCodeURL("")

    http.Redirect(w, r, url, http.StatusFound)
}

func callbackHandler(w http.ResponseWriter, r *http.Request) {
    code := r.FormValue("code")

    tok, err := oauthCfg.Exchange(oauth2.NoContext, code)

    if err != nil {
        log.Fatal(err)
    }

    log.Println(tok)
}

关于go - 我无法使用以下代码检索访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28539552/

相关文章:

go - 您如何测试在Go中调用另一个API端点的服务?

Gomobile 包中没有导出名称

go - 接口(interface)[golang]中的字段?

gorm 不支持的目标,应该是 slice 或结构

go - 如何在 Golang 中将 Math.Pow 与整数一起使用

azure - 使用 Go 在 azure 层次结构中列出 blob 时出现问题

amazon-web-services - 如何解决这个 gRPC 安装问题?

algorithm - 附加字符串和数组的类似 Go 函数未按预期运行

json - 解码字符串和整数的 slice

go - 为什么在 Debian 9 中编译的 golang 二进制文件无法在 Centos 7 中启动?