【问题标题】:Spring social ConnectController /connect/facebook gives a 404 errorSpring social ConnectController /connect/facebook 给出 404 错误
【发布时间】:2012-10-26 20:33:20
【问题描述】:

我正在尝试让 facebook 登录与 spring social 一起使用。 我在 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 错误。

谢谢:)

【问题讨论】:

    标签: facebook spring spring-mvc spring-social


    【解决方案1】:

    我不确定您在项目中处于什么位置,但我认为以下内容可能很容易被忽视...

    如果您查看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>
    

    【讨论】:

    • 用户在尝试访问映射到“连接到 Facebook”按钮的 connect/facebook 时收到 404
    【解决方案2】:

    DispatcherServlet 映射到 *.cs,但 JSP 中的链接是 /connect/facebook(相对于应用程序根目录)。该 URL 不以 .cs 结尾,因此没有匹配项并且 DispatcherServlet 永远不会参与其中。

    尽管您仍然可以将 DispatcherServlet 映射到任意 URL 模式,但自 Spring 3.0 以来的“最佳实践”是将其简单地映射到“/”,以允许它响应各种 URL,包括那些用于 RESTful API 的 URL。

    当然,这也意味着 DispatcherServlet 将响应对图像、样式表、javascript 和其他资源的请求,这可能不是您想要的。并被创建来解决这个问题。有关详细信息,请参阅参考文档 herehere

    【讨论】:

      猜你喜欢
      • 2013-11-02
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 2016-05-13
      • 1970-01-01
      相关资源
      最近更新 更多