diff --git a/openapi/signin/api.go b/openapi/signin/api.go index 66b1f382..8f5a2742 100644 --- a/openapi/signin/api.go +++ b/openapi/signin/api.go @@ -150,6 +150,11 @@ func getOAuthAuthorizationURL(c *gin.Context) { params.Add("scope", "openid profile email") } + // Add response_mode if specified (required for Apple with name/email scopes) + if provider.ResponseMode != "" { + params.Add("response_mode", provider.ResponseMode) + } + authorizationURL := fmt.Sprintf("%s?%s", provider.Endpoints.Authorization, params.Encode()) // Return the authorization URL and state diff --git a/openapi/signin/signin.go b/openapi/signin/signin.go index 3d3cd37d..99445e96 100644 --- a/openapi/signin/signin.go +++ b/openapi/signin/signin.go @@ -94,6 +94,7 @@ type Provider struct { ClientSecret string `json:"client_secret,omitempty"` ClientSecretGenerator *SecretGenerator `json:"client_secret_generator,omitempty"` Scopes []string `json:"scopes,omitempty"` + ResponseMode string `json:"response_mode,omitempty"` Endpoints *Endpoints `json:"endpoints,omitempty"` Mapping map[string]string `json:"mapping,omitempty"` }