func()

in pkce/session.go [37:58]


func (s *Session) Authorize(provider goth.Provider, params goth.Params) (string, error) {
	p := provider.(*Provider)

	token, err := p.Config.Exchange(
		context.Background(),
		params.Get("code"),
		oauth2.SetAuthURLParam("code_verifier", s.CodeVerifier),
	)
	if err != nil {
		return "", err
	}

	if !token.Valid() {
		return "", errors.New("invalid token received from provider")
	}

	s.AccessToken = token.AccessToken
	s.RefreshToken = token.RefreshToken
	s.ExpiresAt = token.Expiry

	return token.AccessToken, nil
}