2014-03-02 2 views
0

나는 스프링 사회에 처음이고 링크드 인을위한 소셜 서명을 설정하려고한다. Spring Social Linkedin - SignIn

공용 클래스 SocialSignInAdapter가 {

의 login.jsp에서
@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; 
} 

} 

,

<li class="linkedin"><a href="${pageContext.request.contextPath}/signin/linkedin" title="LinkedIn">&nbsp;</a></li> 
SignInAdapter를 구현

<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은, 아래 내 스프링 설정 파일,

위의 linkedin 링크를 클릭하면 404 오류가 발생합니다.

내 응용 프로그램이 요청에 대한 ProviderSignInController를 찾을 수 없다고 생각합니다. // dom : 8080/myApp/signin/linkedin.

아래 설정이 봄 xml로 의심됩니다.

<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 패키지에 있고 내 앱에서 찾을 수 없습니다.

다음과 같이 시도해 보았습니다.

<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에 대한 매핑이 잘못되었습니다. 그래서 스프링을 제거했습니다.

<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> 

하지만 여전히 404 오류가 발생합니다.

사람이 제발 ..........

덕분에 나를 도와 Baskar.S

답변

1

로그인의 요청을 처리 org.springframework.social.connect 인 컨트롤러 수 없습니다. 당신이 볼 수있는 web.ProviderSignInController (봄 - 소셜 웹-xxxjar에 존재) 컨트롤러 메소드는 POST 요청을 수락 만, 그래서

@RequestMapping(value="/{providerId}", method=RequestMethod.POST) 
public RedirectView signIn(@PathVariable String providerId, NativeWebRequest request) 

입니다. 앵커 링크 태그를 양식 제출을 트리거하는 버튼으로 변경해야합니다. 예 :

둘째, 스프링 컨트롤러를 위해서는 스프링 클래스에 액세스 할 수 있도록 자체 컨트롤러로 ProviderSignInController를 확장하십시오.

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

희망이 있습니다.

관련 문제