Spring Social Google登录后返回错误

时间:2015-03-05 17:32:22

标签: java google-plus spring-social

我已经为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登录页面

欢迎任何想法,谢谢你。

3 个答案:

答案 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解决了我的问题。