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/