Versions in this module Expand all Collapse all v1 v1.0.0 Mar 21, 2026 Changes in this version + func DeriveOAuthHMACKey(appSecret string) []byte + func FetchUserInfo(ctx context.Context, token *oauth2.Token, url string) (map[string]interface{}, error) + func GeneratePKCEChallenge() (verifier string, challenge string, err error) + func GenerateRandomString(length int) (string, error) + func GetStringField(data map[string]interface{}, field string) string + func SignCookie(payload string, secret []byte) (string, error) + func ValidateCookie(signed string, secret []byte, maxAge time.Duration) (string, error) + func ValidateRedirectTo(redirectTo string, trustedOrigins []string) error + func VerifyHMAC(signature, data string, secret []byte) bool + type BaseProvider struct + func NewBaseProvider(name string, config *oauth2.Config) *BaseProvider + func (p *BaseProvider) Exchange(ctx context.Context, code string, opts ...oauth2.AuthCodeOption) (*oauth2.Token, error) + func (p *BaseProvider) GetAuthURL(state string, opts ...oauth2.AuthCodeOption) string + func (p *BaseProvider) GetConfig() *oauth2.Config + func (p *BaseProvider) Name() string + func (p *BaseProvider) RequiresPKCE() bool + type DiscordProvider struct + func NewDiscordProvider(clientID, clientSecret, redirectURL string) *DiscordProvider + func (p *DiscordProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*types.UserInfo, error) + type GenericProvider struct + func NewGenericProvider(...) *GenericProvider + func (p *GenericProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*types.UserInfo, error) + type GitHubProvider struct + func NewGitHubProvider(clientID, clientSecret, redirectURL string) *GitHubProvider + func (p *GitHubProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*types.UserInfo, error) + func (p *GitHubProvider) RequiresPKCE() bool + type GoogleProvider struct + func NewGoogleProvider(clientID, clientSecret, redirectURL string) *GoogleProvider + func (p *GoogleProvider) GetUserInfo(ctx context.Context, token *oauth2.Token) (*types.UserInfo, error) + type ProviderRegistry struct + func NewProviderRegistry() *ProviderRegistry + func (r *ProviderRegistry) Get(name string) (types.OAuth2Provider, bool) + func (r *ProviderRegistry) GetAll() map[string]types.OAuth2Provider + func (r *ProviderRegistry) IsProviderEnabled(name string) bool + func (r *ProviderRegistry) Register(name string, provider types.OAuth2Provider) error