2016-02-03 24 views
0

我試圖做一個春天啓動應用程序,將連接到使用彈簧社會Fitbit的API。我(中途)實現了ConnectionFactory,它是Fitbit的依賴關係,並且試圖從我的應用程序中使用它。其中一部分涉及啓動ConnectController來處理OAuth2「跳舞」。我的spring-social ConnectController有什麼問題?

當我嘗試在http://localhost:8080/connecthttp://localhost:8080/connect/fitbit我重定向到whitelable錯誤頁面的消息,通過我的瀏覽器擊中ConnectController

有意外的錯誤(類型=不允許的方法,狀態= 405)。

請求方法「GET」不支持

我真的不明白我所看到的,但是當我設置DEBUG級別的日誌記錄,並使用一些斷點,它看起來像打從瀏覽器的結果/connect在春天試圖找到一種叫做connect/status和擊球/connect/fitbit結果在春天試圖找到一個名爲/connect/fitbitConnect東西,然後努力使內部GET請求來/connect/connect/fitbitConnect

在這兩種情況下,它看起來像對應/connect/connect/{providerId}ConnectController方法被調用罰款,那麼Spring炸彈當它尋找所有其他的東西。

這裏是SocialConfigurer執行我使用它創建ConnectController豆:

@Configuration 
@EnableSocial 
@PropertySource("${properties.path}/fitbot-service.properties") 
public class SpringSocialConfig implements SocialConfigurer{ 
    @Override 
    public void addConnectionFactories(ConnectionFactoryConfigurer connectionFactoryConfigurer, Environment environment) { 
     connectionFactoryConfigurer.addConnectionFactory(new FitbitConnectionFactory(
       environment.getProperty("fitbit.clientId"), 
       environment.getProperty("fitbit.clientSecret") 
     )); 
    } 

    @Override 
    public UserIdSource getUserIdSource() { 
     return new SessionUserIdSource(); 
    } 

    @Override 
    public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator connectionFactoryLocator) { 
     return new InMemoryUsersConnectionRepository(connectionFactoryLocator); 
    } 

    @Bean 
    public ConnectController connectController(ConnectionFactoryLocator connectionFactoryLocator, ConnectionRepository connectionRepository) { 
     return new ConnectController(connectionFactoryLocator, connectionRepository); 
    } 

} 

這到底是怎麼回事呢?我究竟做錯了什麼?

回答

1

我相信這是關係到你的關於ConnectController GET與POST的問題,所以你可能已經回答了這個自己。儘管如此,讓我澄清爲什麼它尋找連接/狀態和connect/fitbitConnect。

這些都是視圖名稱。當你做了/連接GET,你問ConnectController獲取所有供應商的連接狀態,並將其放置在模型中,在這之後將這一模式轉發給其邏輯名稱爲「連接/狀態」視圖。通常這是一個JSP在路徑「/connect/status.jsp」或者一個Thymeleaf模板在「/connect/status.html」,但它可以是任何如下的Spring MVC的視圖解析器是在遊戲規則的任何視圖。

同樣,/ connect/fitbit的GET請求要求ConnectController獲取「fitbit」提供程序的連接狀態,並將該信息放入模型中,並將其轉發到名爲「/ connect/fitbitConnect 「(如果沒有連接)或」/ connect/fitbit連接「(如果有連接)。

除了回答你的問題,我還可以要求你告訴我更多關於你的FitBit Spring社交提供者項目嗎?它是否以其他社區主導的春季社交項目爲藍本?換句話說,它是Spring Social的一個獨立擴展,其他人可以使用它?如果是這樣,請告訴我它在GitHub中的位置,我很樂意將它添加到http://projects.spring.io/spring-social/的「社區項目」部分。

+0

(1/2)感謝您也看看這個問題。對此,我真的非常感激。我會考慮添加這些視圖。關於應用程序:我是Target的顧問,他們讓我們做創新衝刺。我的teem上的每個人都適合步數比賽,我們希望獲得有關Hubot傾倒在hipchat中的排名信息。 Spring-social-fitbit是我模仿其他春季社交項目的嘗試。目標可能會讓我們發佈源代碼(這是我們的目標),但我認爲它不會很有用 – David

+0

(2/2)我不認爲我們的spring-social-fitbit會是有用的貢獻有以下幾個原因:(1)我們只建立足夠的功能來獲得步驟信息,(2)我幾乎不知道自己在做什麼,(3)我們可能不會完成。 這就是說,我覺得這個東西足夠有趣,我會考慮分叉/重新啓動這個社區項目。如果我能爲Spring做出實質性貢獻並深入研究這種OAuth,那將是最酷的事情。 – David