void registerProvider()

in plugin-oauth2/plugin/grails-app/services/grails/plugin/springsecurity/oauth2/SpringSecurityOauth2BaseService.groovy [129:165]


    void registerProvider(OAuth2ProviderService providerService) throws OAuth2Exception {
        log.debug("Registering provider: " + providerService.getProviderID())
        if (providerServiceMap.containsKey(providerService.getProviderID())) {
            // There is already a provider under that name
            log.warn("There is already a provider with the name " + providerService.getProviderID() + " registered")
        } else {
            String baseURL = getBaseUrl()
            def callbackURL = getConfigValue(providerService.providerID, "callback") ? baseURL + getConfigValue(providerService.providerID, "callback") : baseURL + "/oauth2/" + providerService.getProviderID() + "/callback"
            log.debug("Callback URL: " + callbackURL)
            def successUrl = getConfigValue(providerService.providerID, "successUri") ? baseURL + getConfigValue(providerService.providerID, "successUri") : null
            log.debug("Success URL: " + successUrl)
            def failureUrl = getConfigValue(providerService.providerID, "failureUri") ? baseURL + getConfigValue(providerService.providerID, "failureUri") : null
            log.debug("Failure URL: " + failureUrl)
            def scopes = getConfigValue(providerService.providerID, "scopes") ?: null
            log.debug("Additional Scopes: " + scopes)
            def apiKey = System.getenv("${providerService.getProviderID().toUpperCase()}_API_KEY") ?: getConfigValue(providerService.providerID, "api_key")
            def apiSecret = System.getenv("${providerService.getProviderID().toUpperCase()}_API_SECRET") ?: getConfigValue(providerService.providerID, "api_secret")
            log.debug("API Key: " + apiKey + ", Secret: " + apiSecret)
            if (apiKey == null || apiKey.isEmpty()) {
                throw new OAuth2Exception("API Key for provider '" + providerService.providerID + "' is missing")
            }
            if (apiSecret == null || apiSecret.isEmpty()) {
                throw new OAuth2Exception("API Secret for provider '" + providerService.providerID + "' is missing")
            }
            _providerConfigurationMap.put(providerService.providerID, new OAuth2ProviderConfiguration(
                    apiKey: apiKey,
                    apiSecret: apiSecret,
                    callbackUrl: callbackURL,
                    successUrl: successUrl,
                    failureUrl: failureUrl,
                    scope: scopes ? providerService.getScopes() + providerService.scopeSeparator + scopes : providerService.getScopes(),
                    debug: grailsApplication.config.getProperty('grails.plugin.springsecurity.oauth2.debug', Boolean, false)
            ))
            providerService.init(_providerConfigurationMap.get(providerService.providerID))
            providerServiceMap.put(providerService.providerID, providerService)
        }
    }