func InitFlow() (*Flow, error) {
	server, err := bindLocalServer()
	if err != nil {
		return nil, err
	}
	state, _ := randomString(20)
	return &Flow{
		server: server,
		state:  state,
	}, nil
}
InitFlow creates a new Flow instance by detecting a locally available port number.
package webapp
import (
	"crypto/rand"
	"encoding/hex"
	"errors"
	"fmt"
	"io"
	"net/http"
	"net/url"
	"strings"
	"github.com/cli/oauth/api"
)
type httpClient interface {
	PostForm(string, url.Values) (*http.Response, error)
}
type Flow struct {
	server   *localServer
	clientID string
	state    string
}