我已经为Facebook,Twitter和Google实施了Spring社交。 对于前2个有效,但Google在谷歌页面上接受允许我的应用程序访问您的Google +帐户后,将用户重定向到 / signin 。 / signin是404.如果我为/ signin创建页面,则显示页面但用户未登录。
我熟悉connectController和GoogleConnectionFactory的基础机制,但我相信它应该将请求重定向回它的来源和访问令牌。这是/ auth /谷歌我相信。我尝试从/ 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;
}
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起源只是我的网址。 我几乎尝试了所有组合。除了/ auth / google之外的所有内容都会导致重定向uri不匹配错误,然后才能进入google登录页面
欢迎任何想法,谢谢你。
答案 0 :(得分:0)
这个项目有一个很好的使用spring-social-google的工作样本:https://github.com/GabiAxel/spring-social-google-example
答案 1 :(得分:0)
我有类似的问题,登录后,有重定向到/ signin,但它不是由谷歌执行,而是由Spring Social谷歌插件。它会向https://www.googleapis.com/plus/v1/people/me发送GET请求,只有在Google控制台中为您的应用启用了Google+ Api时才能调用该请求。
redirect_uri应为/ auth / google
https://github.com/GabiAxel/spring-social-google/issues/22讨论了这个问题。在将来的版本中,它将被修复。
答案 2 :(得分:0)
将pom.xml中的spring-social-google版本更新为1.0.0.RC1解决了我的问题。