我已经为 Facebook、Twitter 和 Google 实现了 Spring social。 对于前 2 个,它可以工作,但在您允许我的应用程序访问您的 google+ 帐户的 google 页面上接受后,Google 将用户重定向到 /signin。 /signin 是 404。如果我为/signin 创建一个页面,该页面会显示,但用户未登录。
我熟悉 connectController 和 GoogleConnectionFactory 的底层机制,但我相信它应该将请求重定向回它的来源并使用访问 token 。这是/auth/google 我相信。我尝试从/signin 重定向到/auth/google 但这没有用。正如 Twitter 和 Facebook 所提到的,没有问题。
代码: 公共(public)类 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);
}
安全配置.java
.apply(getSpringSocialConfigurer()); //to http.
private SpringSocialConfigurer getSpringSocialConfigurer() {
SpringSocialConfigurer config = new SpringSocialConfigurer();
config.alwaysUsePostLoginUrl(true);
config.postLoginUrl("/");
return config;
}
jsp.
//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>
在谷歌应用程序控制台中,我将重定向 URI 设置为:{my_url}/auth/google 和 Javascript 起源到我的网址。 我几乎尝试了所有组合。在您到达 google 登录页面之前,除/auth/google 之外的任何内容都会导致重定向 uri 不匹配错误
欢迎任何想法,在此先感谢您。
最佳答案
这个项目有一个很好的使用 spring-social-google 的工作示例:https://github.com/GabiAxel/spring-social-google-example
关于java - 登录错误后Spring Social Google返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28884077/