我想让facebook登录与spring社交一起工作。 我在Facebook上创建了一个应用程序。
Dispatcher Servlet
<servlet-mapping>
<servlet-name>ABC</servlet-name>
<url-pattern>*.cs</url-pattern>
</servlet-mapping>
配置了xmls
<servlet-mapping>
<servlet-name>ABC</servlet-name>
<url-pattern>*.cs</url-pattern>
</servlet-mapping>
<!-- Configure a connection repository through which account-to-provider connections will be stored -->
<beans:bean id="connectionRepository" class="org.springframework.social.connect.jdbc.JdbcConnectionRepository">
<beans:constructor-arg ref="dataSource" />
<beans:constructor-arg ref="textEncryptor" />
</beans:bean>
<!-- Configure a Facebook service provider -->
<beans:bean class="org.springframework.social.facebook.connect.FacebookServiceProvider">
<beans:constructor-arg index="0" value="564846465216" />
<beans:constructor-arg index="1" value="f4554iojfjh9iu7km54f54pok5ok4" />
<beans:constructor-arg index="2" ref="connectionRepository" />
</beans:bean>
<beans:bean id="textEncryptor" class="org.springframework.security.crypto.encrypt.Encryptors" factory-method="noOpText" />
<beans:bean class="org.springframework.social.web.connect.ConnectController">
<beans:constructor-arg index="0" value="http://localhost:8080/CitySpanks/" />
</beans:bean>
我指的是此链接 http://static.springsource.org/spring-social/docs/1.0.0.M2/reference/html/connecting.html
在我的jsp中
<a href="<c:url value="connect/facebook" />">Connect to Facebook</a>
我缺少什么?点击上面的链接我一直收到404错误。
谢谢:)
答案 0 :(得分:3)
我不确定你在项目中的位置,但我认为以下内容可能很容易被忽视......
如果您查看spring-social-showcase的示例项目,您会注意到
spring-social-showcase-sec/src/main/webapp/WEB-INF/views/connect
存在以下页面: status.jsp,facebookConnect.jsp,facebookConnected.jsp。
在示例项目中,当请求以下(左)时,它将解析下面的(.jsp):
"connect/facebook" => Connected => "connect/facebookConnected.jsp"
"connect/facebook" => Not Connected => "connect/facebookConnect.jsp"
"connect" => "connect/status.jsp"
此处记录了这些内容:4.3.1 Displaying a connection page
因此,要使该示例在您的代码中工作,您必须使用上面的.jsp创建相同的目录结构“WEB-INF / views / connect /”。否则他们将无法找到,因此404.我相信这是由ConnectController
类在幕后解决的,如上文链接的文档所述。
但是,您可能希望从使用spring-social-samples中的web.xml配置开始,一旦掌握了它,就从那里开始。
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
答案 1 :(得分:1)
DispatcherServlet映射到* .cs,但JSP中的链接是/ connect / facebook(相对于应用程序根目录)。该URL不以.cs结尾,因此没有匹配且DispatcherServlet永远不会涉及。
尽管您仍然可以将DispatcherServlet映射到任意URL模式,但是自Spring 3.0以来的“最佳实践”只是将其映射到“/”,以允许它响应各种URL,包括RESTful API的URL。
当然,这也意味着DispatcherServlet将响应对图像,样式表,javascript和其他资源的请求,这可能不是您想要的。并且被创建来解决这个问题。有关详细信息,请参阅参考文档here和here。