function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
chrisx01chrisx01 

Spring Heroku Canavs

Hello,

 

I want try to develop a heroku app with spring (eclipse template) but i does not work.

i get a error access token expiered  or oauth is invlaid.

how can i build a spring app on heroku that's connect salesforce and integrate with canvas

 

when i use the jsp with  a decode function it work ?

 

chris

 

chrisx01chrisx01

stacktrace:

 

8+00:00 app[web.1]: INFO: Starting ProtocolHandler ["http-bio-34344"]

2012-10-21T15:43:45+00:00 app[web.1]: 29133 [http-bio-34344-exec-4] ERROR com.force.sdk.springsecurity.OAuthAuthenticationProvider - Unable to get access token

2012-10-21T15:43:45+00:00 app[web.1]: at org.springframework.security.authentication.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:48)

2012-10-21T15:43:45+00:00 app[web.1]: at com.force.sdk.springsecurity.AuthenticationProcessingFilter.attemptAuthentication(AuthenticationProcessingFilter.java:138)

2012-10-21T15:43:45+00:00 app[web.1]: at com.force.sdk.springsecurity.AuthenticationProcessingFilter.doFilter(AuthenticationProcessingFilter.java:109)

2012-10-21T15:43:45+00:00 app[web.1]: at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

2012-10-21T15:43:45+00:00 app[web.1]: at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)

2012-10-21T15:43:45+00:00 app[web.1]: at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)

2012-10-21T15:43:45+00:00 app[web.1]: at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

2012-10-21T15:43:45+00:00 app[web.1]: at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)

2012-10-21T15:43:45+00:00 app[web.1]: at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

2012-10-21T15:43:45+00:00 app[web.1]: java.io.IOException: {"error":"invalid_grant","error_description":"expired authorization code"}

2012-10-21T15:43:45+00:00 app[web.1]: at com.force.sdk.oauth.connector.TokenRetrievalServiceImpl.retrieveToken(TokenRetrievalServiceImpl.java:82)

2012-10-21T15:43:45+00:00 app[web.1]: at com.force.sdk.oauth.connector.TokenRetrievalServiceImpl.throwDetailedException(TokenRetrievalServiceImpl.java:98)

2012-10-21T15:43:45+00:00 app[web.1]: at com.force.sdk.oauth.connector.ForceOAuthConnector.createTokenInternal(ForceOAuthConnector.java:184)

2012-10-21T15:43:45+00:00 app[web.1]: at com.force.sdk.oauth.connector.ForceOAuthConnector.getAccessToken(ForceOAuthConnector.java:145)

2012-10-21T15:43:45+00:00 app[web.1]: at com.force.sdk.springsecurity.OAuthAuthenticationProvider.authenticate(OAuthAuthenticationProvider.java:78)

2012-10-21T15:43:45+00:00 app[web.1]: at org.springframework.security.authentication.ProviderManager.doAuthentication(ProviderManager.java:130)

2012-10-21T15:43:45+00:00 app[web.1]: at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)

2012-10-21T15:43:45+00:00 app[web.1]: at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

2012-10-21T15:43:45+00:00 app[web.1]: at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)

2012-10-21T15:43:45+00:00 app[web.1]: at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)

2012-10-21T15:43:45+00:00 app[web.1]: at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)

2012-10-21T15:43:45+00:00 app[web.1]: at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)

2012-10-21T15:43:45+00:00 app[web.1]: at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)

2012-10-21T15:43:45+00:00 app[web.1]: at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)

2012-10-21T15:43:45+00:00 app[web.1]: at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

2012-10-21T15:43:45+00:00 app[web.1]: at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)

2012-10-21T15:43:45+00:00 app[web.1]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)

2012-10-21T15:43:45+00:00 app[web.1]: at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)

2012-10-21T15:43:45+00:00 app[web.1]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)

2012-10-21T15:43:45+00:00 app[web.1]: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

2012-10-21T15:43:45+00:00 app[web.1]: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

2012-10-21T15:43:45+00:00 app[web.1]: at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)

2012-10-21T15:43:45+00:00 app[web.1]: at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)

2012-10-21T15:43:45+00:00 app[web.1]: at java.lang.Thread.run(Thread.java:636)

2012-10-21T15:43:45+00:00 app[web.1]: Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: https://login.salesforce.com/services/oauth2/token

2012-10-21T15:43:45+00:00 app[web.1]: at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1403)

2012-10-21T15:43:45+00:00 app[web.1]: at com.force.sdk.oauth.connector.TokenRetrievalServiceImpl.retrieveToken(TokenRetrievalServiceImpl.java:79)

2012-10-21T15:43:45+00:00 app[web.1]: at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)

2012-10-21T15:43:45+00:00 app[web.1]: ... 31 more

2012-10-21T15:43:45+00:00 app[web.1]: INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

2012-10-21T15:43:45+00:00 app[web.1]: Oct 21, 2012 3:43:45 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar

2012-10-21T15:44:49+00:00 app[web.1]: 93159 [http-bio-34344-exec-8] ERROR com.force.sdk.springsecurity.OAuthAuthenticationProvider - Unable to get access token

2012-10-21T15:44:49+00:00 app[web.1]: java.io.IOException: Missing refresh token on response

2012-10-21T15:44:49+00:00 app[web.1]: at com.force.sdk.oauth.connector.ForceOAuthConnector.createTokenInternal(ForceOAuthConnector.java:196)

2012-10-21T15:44:49+00:00 app[web.1]: at com.force.sdk.oauth.connector.ForceOAuthConnector.getAccessToken(ForceOAuthConnector.java:145)

2012-10-21T15:44:49+00:00 app[web.1]: at com.force.sdk.springsecurity.OAuthAuthenticationProvider.authenticate(OAuthAuthenticationProvider.java:78)

2012-10-21T15:44:49+00:00 app[web.1]: at org.springframework.security.authentication.ProviderManager.doAuthentication(ProviderManager.java:130)

2012-10-21T15:44:49+00:00 app[web.1]: at org.springframework.security.authentication.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:48)

2012-10-21T15:44:49+00:00 app[web.1]: at com.force.sdk.springsecurity.AuthenticationProcessingFilter.attemptAuthentication(AuthenticationProcessingFilter.java:138)

2012-10-21T15:44:49+00:00 app[web.1]: at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)

2012-10-21T15:44:49+00:00 app[web.1]: at com.force.sdk.springsecurity.AuthenticationProcessingFilter.doFilter(AuthenticationProcessingFilter.java:109)

2012-10-21T15:44:49+00:00 app[web.1]: at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

2012-10-21T15:44:49+00:00 app[web.1]: at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)

2012-10-21T15:44:49+00:00 app[web.1]: at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

2012-10-21T15:44:49+00:00 app[web.1]: at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)

2012-10-21T15:44:49+00:00 app[web.1]: at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

2012-10-21T15:44:49+00:00 app[web.1]: at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)

2012-10-21T15:44:49+00:00 app[web.1]: at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

2012-10-21T15:44:49+00:00 app[web.1]: at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)

2012-10-21T15:44:49+00:00 app[web.1]: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)

2012-10-21T15:44:49+00:00 app[web.1]: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

2012-10-21T15:44:49+00:00 app[web.1]: at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)

2012-10-21T15:44:49+00:00 app[web.1]: at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)

2012-10-21T15:44:49+00:00 app[web.1]: at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)

2012-10-21T15:44:49+00:00 app[web.1]: at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)

2012-10-21T15:44:49+00:00 app[web.1]: at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)

2012-10-21T15:44:49+00:00 app[web.1]: at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValv

jhurstjhurst

Chris,

 

With Force.com Canvas, there are two ways to deliver a authentication token to your spring applications (through a signed request, or through OAuth).  The default is signed request and delivers the context as a POST messgae when you click the App from inside of salesforce.

 

The stack trace you are using below seems to indicate that you are not using the Canvas methods of authentication, but perhaps using the methods from a different SDK?  The error indicates that the authorization code (a short lived code used to get an authorization into salesforce) is expired.  You wil have to make sure you are either using the token from canvas (if you are trying top expose in canvas) or that you are using a freshly delivered authorization code (if you are using a different authentication outside of Canvas)

 

Hope this helps.

Jay