For now I'm overwriting the ProviderSignInController class, but my foreboding tells me that this is not the best solution
class MyProviderSignInController extends ProviderSignInController {
private final Logger log = LoggerFactory.getLogger(MyProviderSignInController.class);
private String urlToOauth2ErrorCallback;
public MyProviderSignInController(ConnectionFactoryLocator connectionFactoryLocator,
UsersConnectionRepository usersConnectionRepository, SignInAdapter signInAdapter) {
super(connectionFactoryLocator, usersConnectionRepository, signInAdapter);
}
public void defineUrlToOauth2ErrorCallback(String urlToOauth2ErrorCallback) {
this.urlToOauth2ErrorCallback = urlToOauth2ErrorCallback;
}
@RequestMapping(value = "/{providerId}", method = RequestMethod.GET, params = "error")
public RedirectView oauth2ErrorCallback(@PathVariable String providerId, @RequestParam("error") String error,
@RequestParam(value = "error_description", required = false) String errorDescription,
@RequestParam(value = "error_uri", required = false) String errorUri, NativeWebRequest request) {
log.warn("Error during authorization: " + error);
if (urlToOauth2ErrorCallback != null) {
return new RedirectView(urlToOauth2ErrorCallback, false);
}
return super.oauth2ErrorCallback(providerId, error, errorDescription, errorUri, request);
}
}