java - 登录错误后Spring Social Google返回

标签 java google-plus spring-social

我已经为 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/

相关文章:

java - 给定维度的多维数组

java - 模拟大量用户对 Web 服务的请求的好方法是什么?

java - 最小和差的等分法

wordpress - 在 Google plus 中发布 Wordpress 帖子?

java - Spring 社交 Facebook : "The OAuth2 ' state' parameter doesn't match"

java - 使用 Spring Social 在 Facebook 墙上安排帖子

java - 在 HTML 标签之间提取数据

html - 如何在 IE9 的 div 框中向上移动 +1 google 插件

ios - Google+ 登录按钮自定义

java - Multi-Tenancy 应用程序中的 Spring Social 为每个租户提供唯一的 ConnectionFactory 实例