Проблема обмена кодом авторизации для токена, Go OAuth2 - PullRequest
0 голосов
/ 16 марта 2020

У меня проблемы с обменом кода авторизации на токен. Кто-нибудь еще сталкивался с подобной ошибкой раньше? Я очень новичок в 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"}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...