Versions in this module Expand all Collapse all v0 v0.2.0 Mar 8, 2026 v0.1.0 Feb 28, 2026 Changes in this version + var ErrFailedUserInfo = errors.New("failed to fetch user info") + var ErrInvalidState = errors.New("invalid oauth state") + var ErrProviderNotConfigured = errors.New("oauth provider not configured") + type GitHubUser struct + AvatarURL string + Email string + ID int + Login string + Name string + func (u *GitHubUser) ToUserInfo(accessToken, refreshToken string) *UserInfo + type GoogleUser struct + Email string + FamilyName string + GivenName string + ID string + Name string + Picture string + VerifiedEmail bool + func (u *GoogleUser) ToUserInfo(accessToken, refreshToken string) *UserInfo + type Handler struct + func NewHandler(stateStore StateStore) *Handler + func (h *Handler) AuthorizationURL(ctx context.Context, provider Provider, redirectURL string) (string, error) + func (h *Handler) GetProvider(provider Provider) (*ProviderConfig, bool) + func (h *Handler) HandleCallback(ctx context.Context, provider Provider, code, state string) (*UserInfo, string, error) + func (h *Handler) RegisterProvider(cfg *ProviderConfig) + type MemoryStateStore struct + func NewMemoryStateStore() *MemoryStateStore + func (s *MemoryStateStore) Get(ctx context.Context, state string) (StateData, error) + func (s *MemoryStateStore) Set(ctx context.Context, state string, data StateData, expiry time.Duration) error + type Provider string + const GitHub + const Google + type ProviderConfig struct + ClientID string + ClientSecret string + Provider Provider + RedirectURL string + Scopes []string + func (p *ProviderConfig) OAuth2Config() *oauth2.Config + type StateData struct + Nonce string + Provider Provider + RedirectURL string + type StateStore interface + Get func(ctx context.Context, state string) (StateData, error) + Set func(ctx context.Context, state string, data StateData, expiry time.Duration) error + type UserInfo struct + AccessToken string + AvatarURL string + Email string + ID string + Name string + Provider Provider + RefreshToken string