Oauth 2.0 Spring社交linkedin未发送“信息”;“国家”;带有oAuth2的参数

Oauth 2.0 Spring社交linkedin未发送“信息”;“国家”;带有oAuth2的参数,oauth-2.0,linkedin,spring-social,Oauth 2.0,Linkedin,Spring Social,我试图在Spring应用程序中实现Linkedin社交登录;我使用的是最新版本spring-social-linkedin-1.0.0.RC4和spring-social-1.0.3.release 我设法将授权链接发送到Linkedin: https://www.linkedin.com/uas/oauth2/authorization?client_id=....&response_type=code&redirect_uri=.... User principal = (

我试图在Spring应用程序中实现Linkedin社交登录;我使用的是最新版本spring-social-linkedin-1.0.0.RC4和spring-social-1.0.3.release

我设法将授权链接发送到Linkedin:

https://www.linkedin.com/uas/oauth2/authorization?client_id=....&response_type=code&redirect_uri=....
User principal = (User)  SecurityContextHolder.getContext().getAuthentication().getPrincipal();
ConnectionRepository repository = usersConnectionRepository.createConnectionRepository(principal.getUsername());
Connection<LinkedIn> connection = repository.findPrimaryConnection(LinkedIn.class);
    return connection.getApi();
但是发送请求时没有必需的“state”请求参数,因此它总是导致Linkedin出错。我仔细检查了一下,只需手动将缺少的参数添加到te url,就可以从linkedin获得正确的登录页面,因此我知道客户端id是正确的

以下是我用来连接Linkedin的代码:

https://www.linkedin.com/uas/oauth2/authorization?client_id=....&response_type=code&redirect_uri=....
User principal = (User)  SecurityContextHolder.getContext().getAuthentication().getPrincipal();
ConnectionRepository repository = usersConnectionRepository.createConnectionRepository(principal.getUsername());
Connection<LinkedIn> connection = repository.findPrimaryConnection(LinkedIn.class);
    return connection.getApi();
User principal=(用户)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
ConnectionRepository repository=usersConnectionRepository.createConnectionRepository(principal.getUsername());
连接=repository.findPrimaryConnection(LinkedIn.class);
返回连接;
以及connectionFactoryLocator的配置,其中占位符已正确解析:

<bean id="connectionFactoryLocator"
    class="org.springframework.social.connect.support.ConnectionFactoryRegistry">
    <property name="connectionFactories">
        <list>
            <bean
                class="org.springframework.social.linkedin.connect.LinkedInConnectionFactory">
                <constructor-arg value="${linkedin.api.key}" />
                <constructor-arg value="${linkedin.api.secret}" />
            </bean>
        </list>
    </property>
</bean>

其他的一切都是由这本书配置的,它是相当标准的SpringSocial+jdbc设置。 我认为“state”和“scope”参数的配置方式应该与“api.key”和“api.secret”(在请求中正确设置)相同,但我找不到如何配置


有人做到了吗?

我发现:最简单的方法是使用拦截器并将其添加到ConnectController。您可以在那里添加任何您喜欢的参数。
或者升级到具有自动状态参数处理功能的spring social 1.1.0(目前处于RC1阶段)。

我对最新的spring social(1.1.4)也有同样的问题。你能解释一下你是如何使用拦截器让它工作的吗?我在这里打开了一条线索:已经有一段时间了,我终于升级了di-Spring Social 1.1来永久解决这个问题;一般的想法是,如果您有一个类:public class WebConfig扩展了WebMVCConfigureAdapter,那么您可以重写此方法并添加您想要请求和响应的任何拦截器:@override public void addInterceptors(interceptor注册表){registry.addInterceptor(localechangereceptor());