oauth2/google/authhandler.go

39 lines
1.3 KiB
Go
Raw Normal View History

// Copyright 2020 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package google
import (
"fmt"
"github.com/google/uuid"
)
// RandomAuthorizationState generates a state via UUID generator.
func RandomAuthorizationState() string {
return uuid.New().String()
}
// DefaultAuthorizationHandler returns a command line auth handler
// that prints the auth URL on the console and prompts the user to
// authorize in the browser and paste the auth code back via stdin.
//
// For convenience, this handler returns a pre-configured state
// instead of asking the user to additionally paste the state from
// the auth response. In order for this to work, the state
// configured here should match the one in the oauth2 AuthTokenURL.
func DefaultAuthorizationHandler(state string) AuthorizationHandler {
return func(authCodeURL string) (string, string, error) {
return defaultAuthorizationHandlerHelper(state, authCodeURL)
}
}
func defaultAuthorizationHandlerHelper(state string, authCodeURL string) (string, string, error) {
fmt.Printf("Go to the following link in your browser:\n\n %s\n\n", authCodeURL)
fmt.Println("Enter authorization code: ")
var code string
fmt.Scanln(&code)
return code, state, nil
}