Я внедрил Spring для Facebook, Twitter и Google. Для первых 2 он работает, но Google перенаправляет пользователя на /signin после принятия на странице google, где вы разрешаете моему приложению получать доступ к вашей учетной записи google +. /signin - 404. Если я сделаю страницу для/подписания, страница будет отображаться, но пользователь не выполнил вход.Spring Social Google возвращается после ошибочного входа
Я знаком с основными механиками connectController и GoogleConnectionFactory, но я считаю, что он должен перенаправить запрос обратно туда, откуда он появился, и с помощью токенов доступа. Это/auth/google, я верю. Я попробовал перенаправление из/signin в/auth/google, но это не сработало. Как упоминалось для Twitter и Facebook, проблем не было.
Код: общественный класс SocialConfig реализует SocialConfigurer
@Override
public void addConnectionFactories(ConnectionFactoryConfigurer cfConfig, Environment env) {
cfConfig.addConnectionFactory(new FacebookConnectionFactory(
env.getProperty("facebook.app.id"),
env.getProperty("facebook.app.secret")
));
cfConfig.addConnectionFactory(new TwitterConnectionFactory(
env.getProperty("twitter.consumer.key"),
env.getProperty("twitter.consumer.secret")
));
cfConfig.addConnectionFactory(new GoogleConnectionFactory(
env.getProperty("google.app.id"),
env.getProperty("google.app.secret")));
}
@Bean
public ConnectController connectController(ConnectionFactoryLocator connectionFactoryLocator, ConnectionRepository connectionRepository) {
return new ConnectController(connectionFactoryLocator, connectionRepository);
}
SecurityConfig.java
.apply(getSpringSocialConfigurer()); //to http.
private SpringSocialConfigurer getSpringSocialConfigurer() {
SpringSocialConfigurer config = new SpringSocialConfigurer();
config.alwaysUsePostLoginUrl(true);
config.postLoginUrl("/");
return config;
}
СПЯ.
//facebook
<a href="${pageContext.request.contextPath}/auth/facebook" class="hidden-xs">
<img src="<c:url value="/static/img/fb-login.png"/>" height="32"/>
</a>
//twitter
<a href="${pageContext.request.contextPath}/auth/twitter" class="hidden-xs">
<img src="<c:url value="/static/img/twitter-login.png"/>" height="20" width="24"/>
</a>
//google
<form name="go_signin" id="go_signin" action="<c:url value="/auth/google"/>" method="POST" class="float-left">
<div onclick="this.parentNode.submit();">
<img src="<c:url value="/static/img/google-login.png"/>" height="32"/>
</div>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
<input type="hidden" name="scope" value="https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.login" />
</form>
В приложении консоли Google я набор URI переадресации на: {my_url}/авториз/ Google и Javascript Origins только мой URL. Я пробовал почти каждую комбинацию. ничего, кроме/auth/google, приведет к ошибке несоответствия uri перенаправления, прежде чем вы попадете на страницу входа google.
Любые идеи приветствуются, заблаговременно.
Вам необходимо изменить настройки в консоли Google, для чего разрешен redirect_uri, но тогда вы должны сконфигурировать в своем коде где-то, что должно быть на самом деле redirect_uri. Документация, вероятно, где-то говорит. – abraham
Я добавил PostLoginURL, а также попытаюсь установить его в форме: Но это не сработает. Документы Google говорят, что следующее, но в моем случае, похоже, не делает этого: после того, как пользователь авторизует ваше приложение, они будут перенаправлены на ваш/oauth/url. Там вы получите параметр «code». Вы можете обменять этот код на токен доступа: это SpringSocialController, который должен обрабатывать аутентификацию. –
Вы когда-нибудь решали эту проблему? У меня такая же проблема. После регистрации в первый раз google перенаправляет меня на '/ signin' вместо'/singup'. – Jagger