首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Social Linkedin - SignIn

Spring Social Linkedin - SignIn
EN

Stack Overflow用户
提问于 2014-03-02 22:33:06
回答 1查看 1.2K关注 0票数 0

我是Spring社交的新手,正在尝试为linkedin配置spring社交登录。

下面是我的spring配置文件,

代码语言:javascript
复制
<context:component-scan base-package="com.tc.web">
<context:include-filter type="regex"
expression="(service|controller|component)\..*" />
</context:component-scan>

<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="key........" />
<constructor-arg value="secret .........." />
</bean>
</list>
</property>
</bean>

<bean id="textEncryptor" class="org.springframework.security.crypto.encrypt .Encryptors"
factory-method="noOpText" />

<bean id="usersConnectionRepository"
class="org.springframework.social.connect.jdbc.Jdb cUsersConnectionRepository">
<constructor-arg ref="dataSource" />
<constructor-arg ref="connectionFactoryLocator" />
<constructor-arg ref="textEncryptor" />
</bean>

<bean id="connectionRepository" factory-method="createConnectionRepository"
factory-bean="usersConnectionRepository" scope="request">
<constructor-arg value="#{request.userPrincipal.name}" />
<aop:scoped-proxy proxy-target-class="false" />
</bean>


<bean id="signInAdapter" class="com.tc.web.social.signin.SocialSignInAdapte r" />

<bean class="org.springframework.social.connect.web.Prov iderSignInController">
<!-- relies on by-type autowiring for the constructor-args -->
<constructor-arg ref="signInAdapter" />
<property name="applicationUrl" value="link" />
<property name="signUpUrl" value="link" />
<property name="signInUrl" value="link" />
</bean>

我的SocialSignInAdapter.java是

公共类SocialSignInAdapter实现了SignInAdapter{

代码语言:javascript
复制
@Override
public String signIn(String userId, Connection<?> connection, NativeWebRequest request) {
System.out.println("User Id is ===>>> "+userId);
System.out.println("Connection is ====>>> "+connection);
return null;
}

}

在Login.jsp中,

代码语言:javascript
复制
<li class="linkedin"><a href="${pageContext.request.contextPath}/signin/linkedin" title="LinkedIn">&nbsp;</a></li>

当我点击上面的linkedin链接时,我得到404错误。

我猜我的应用程序找不到请求的ProviderSignInController ://dom:8080/myApp/signin/linkedin。

我怀疑spring xml中的以下配置。

代码语言:javascript
复制
<context:component-scan base-package="com.tc.web">
<context:include-filter type="regex"
expression="(service|controller|component)\..*" />
</context:component-scan>

我把我所有的控制器都放在com.tc.web包中。但是ProviderSignInController在Spring包中,我的应用程序无法找到它。

我也尝试了下面的方法。

代码语言:javascript
复制
<context:component-scan base-package="com.tc.web,org.springframework.social.con nect.web">
<context:include-filter type="regex"
expression="(service|controller|component)\..*" />
</context:component-scan>

在上面的配置中,我得到了ProviderSignInController的模糊映射错误。因此,我删除了

代码语言:javascript
复制
<bean class="org.springframework.social.connect.web.Prov iderSignInController">
<!-- relies on by-type autowiring for the constructor-args -->
<constructor-arg ref="signInAdapter" />
<property name="applicationUrl" value="link" />
<property name="signUpUrl" value="link" />
<property name="signInUrl" value="link" />
</bean>

来自我的spring xml。但我仍然收到404错误。

有人能在这方面帮我忙吗..........

谢谢,Baskar.S

EN

回答 1

Stack Overflow用户

发布于 2014-03-07 02:54:34

处理登录请求的控制器是org.springframework.social.connect.web.ProviderSignInController (出现在spring-social-web-x.jar中),控制器方法是

代码语言:javascript
复制
@RequestMapping(value="/{providerId}", method=RequestMethod.POST)
public RedirectView signIn(@PathVariable String providerId, NativeWebRequest request)

因此,正如您所看到的,它只接受POST请求。您必须将锚链接标记更改为触发表单提交的按钮。例如:

代码语言:javascript
复制
<form action="<c:url value="/signin/linkedin" />" method="POST" id="frmLiConnect"></form>

其次,为了使用Spring Controller,使用您自己的虚拟控制器扩展ProviderSignInController,这样Spring类就可以访问了。

代码语言:javascript
复制
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.social.connect.ConnectionFactoryLocator;
import org.springframework.social.connect.UsersConnectionRepository;
import org.springframework.social.connect.web.ProviderSignInController;
import org.springframework.social.connect.web.SignInAdapter;
import org.springframework.stereotype.Controller;
@Controller
public class SigninController extends ProviderSignInController {

@Autowired
public SigninController(ConnectionFactoryLocator connectionFactoryLocator,
        UsersConnectionRepository usersConnectionRepository,
        SignInAdapter signInAdapter) {
    super(connectionFactoryLocator, usersConnectionRepository, signInAdapter);
    // TODO Auto-generated constructor stub
}

}

有关更多详细信息,您还可以参考以下链接中的Spring Social Showcase示例。https://github.com/spring-projects/spring-social-samples/tree/master/spring-social-showcase/src/main/java/org/springframework/social/showcase/signin

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22128895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档