Задать вопрос
@taluks
какой бесполезный сайт(

Есть ли у кого пример VK ID Авторизация Spring boot?

Есть ли простой способ конфигурации получения OAuth2 токена VK ID в Spring boot на бекенде?
Если сделать стандартную конфигурацию, то ничего не работает:
auth-without-sdk-web
spring.security.oauth2.client.registration.vk.client-id=123456
spring.security.oauth2.client.registration.vk.client-secret=
spring.security.oauth2.client.registration.vk.redirect-uri={baseUrl}/login/oauth2/code/{registrationId}
spring.security.oauth2.client.registration.vk.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.vk.scope=email
spring.security.oauth2.client.registration.vk.client-authentication-method=none

spring.security.oauth2.client.provider.vk.authorization-uri=https://id.vk.com/authorize
spring.security.oauth2.client.provider.vk.token-uri=https://id.vk.com/oauth2/auth
spring.security.oauth2.client.provider.vk.user-info-uri=https://id.vk.com/oauth2/user_info
spring.security.oauth2.client.provider.vk.user-name-attribute=email

Вначале отваливается на том что state генерируется с недопустимыми символами типа =/ . Если это исправить то потом отваливается что не передается device_id при получении токена, что поправить переписыванием кучи кода не получится.
Не нашел как сделать стандартную авторизацию OAuth2 ВК.
  • Вопрос задан
  • 119 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@taluks Автор вопроса
какой бесполезный сайт(
//id 'org.springframework.boot' version '3.5.3'
private AbstractRestClientOAuth2AccessTokenResponseClient<OAuth2AuthorizationCodeGrantRequest> oauth2TokenClient() {
		RestClientAuthorizationCodeTokenResponseClient client =
				new RestClientAuthorizationCodeTokenResponseClient();

		client.setParametersCustomizer((parameters) -> {
			RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
			HttpServletRequest request = ((ServletRequestAttributes) attributes).getRequest();
			parameters.add("device_id", request.getParameter("device_id"));
		});
		return client;
	}

	private OAuth2AuthorizationRequestResolver oauth2AuthorizationResolver() {
		DefaultOAuth2AuthorizationRequestResolver resolver =
				new DefaultOAuth2AuthorizationRequestResolver(clientRegistrationRepository, "/oauth2/authorization");

		resolver.setAuthorizationRequestCustomizer(builder -> builder.state(UUID.randomUUID().toString()));
		return resolver;
	}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы