У меня проблемы с обменом кода авторизации на токен. Кто-нибудь еще сталкивался с подобной ошибкой раньше? Я очень новичок в OAuth2, мне нужно изучить его с нуля и применить его за пару дней, к сожалению, в моей фирме нет никого, кто знаком с OAuth2.
основной пакет
import (
"fmt"
"golang.org/x/oauth2"
"log"
"math/rand"
"net/http"
)
var (
oAuth2Config= &oauth2.Config{
ClientID: "<client_id>",
ClientSecret: "<client_secret>",
Endpoint: oauth2.Endpoint{
AuthURL: "https://oauth2.provider.no/auth",
TokenURL: "https://oauth2.provider.no/token",
AuthStyle: 1,
},
RedirectURL: "<redirect_uri>",
Scopes: nil,
}
resourceServerURL = "https://api.provider.no"
resourceServerPathCustomers = "/gapi/v1/customers"
resourceServerPathCases = "/gapi/v1/cases"
resourceServerPathAlarms = "/gapi/v1/alarms"
resourceServerPathCIS = "/gapi/v1/cis"
// tokenChan = make(chan *oauth2.Token) // we could possibly send a token here and continue using it.
oAuth2State = randomString(14)
)
func randomString(length int) string {
str := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ0123456789"
generatedString := make([]rune, length)
for i := 0; i < len(generatedString); i++ {
generatedString[i] = rune(str[rand.Intn(len(str))])
}
return string(generatedString)
}
func main() {
http.HandleFunc("/", handleCallback)
if err := http.ListenAndServe(":8082", nil); err != nil {
log.Fatal(err)
}
}
func handleCallback(w http.ResponseWriter, r *http.Request) {
_ = Auth2Config.AuthCodeURL(oAuth2State)
if state := r.FormValue("state"); state != OAuth2State {
fmt.Println("state is not valid")
return
}
token, err := oAuth2Config.Exchange(oauth2.NoContext, r.FormValue("code"))
if err != nil {
log.Println(err)
return
}
fmt.Println(token.AccessToken)
}
Ошибка:
2020/03/16 15:49:30 oauth2: cannot fetch token: 400
Response: {"error_description":"Missing grant_type parameter value","error":"invalid_reques│
t"}