2015-08-17 7 views
2

Я создаю проект Play Scala и нуждаюсь в аутентификации для приложений. Я использую этот: https://github.com/nulab/scala-oauth2-provider как Oauth Provider libs. Я реализовал все на основе документов. Но при реализации Auth на контроллере ниже:Прослушать Ошибка поставщика Scala Oauth

object Token extends MainController with OAuth2Provider { 
def accessToken = Action.async { implicit request => 
issueAccessToken(new MyDataHandler() 
} 

А вот мой маршрутизатор:

GET  /test       controllers.Token.test 
POST /token       controllers.Token.accessToken 

Когда я достигаю локальный/маркер, я получил эту ошибку: enter image description here

И здесь ошибка с консоли:

 

play.api.Application$$anon$1: Execution exception[[RuntimeException: java.lang.IncompatibleClassChangeError: Found interface play.api.mvc.Headers, but class was expected]] 
     at play.api.Application$class.handleError(Application.scala:296) ~[play_2.10-2.3.7.jar:2.3.7] 
     at play.api.DefaultApplication.handleError(Application.scala:402) [play_2.10-2.3.7.jar:2.3.7] 
     at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.10-2.3.7.jar:2.3.7] 
     at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.10-2.3.7.jar:2.3.7] 
     at scala.Option.map(Option.scala:145) [scala-library-2.10.5.jar:na] 
Caused by: java.lang.RuntimeException: java.lang.IncompatibleClassChangeError: Found interface play.api.mvc.Headers, but class was expected 
     at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:523) ~[play_2.10-2.3.7.jar:2.3.7] 
     at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:130) ~[play_2.10-2.3.7.jar:2.3.7] 
     at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:130) ~[play_2.10-2.3.7.jar:2.3.7] 
     at play.utils.Threads$.withContextClassLoader(Threads.scala:21) ~[play_2.10-2.3.7.jar:2.3.7] 
     at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:129) ~[play_2.10-2.3.7.jar:2.3.7] 
Caused by: java.lang.IncompatibleClassChangeError: Found interface play.api.mvc.Headers, but class was expected 
     at scalaoauth2.provider.OAuth2BaseProvider$class.play2oauthRequest(OAuth2Provider.scala:24) ~[play2-oauth2-provider_2.10-0.15.1.jar:0.15.1] 
     at controllers.Token$.play2oauthRequest(Token.scala:14) ~[na:na] 
     at scalaoauth2.provider.OAuth2Provider$class.issueAccessToken(OAuth2Provider.scala:138) ~[play2-oauth2-provider_2.10-0.15.1.jar:0.15.1] 
     at controllers.Token$.issueAccessToken(Token.scala:14) ~[na:na] 
     at controllers.Token$$anonfun$accessToken$1.apply(Token.scala:25) ~[na:na] 
 

У меня есть implem все, что говорится в документах. Извините, я на самом деле новичок в Scala и в Play it self.

ответ

4

Что вы используете версию Play и scala-oauth2-provider?

Ошибка выглядит Play-версия отличается. Если вы используете Play 2.3, вы должны использовать 0.14.0 в scala-oauth2-provider.

См. Readme.

+0

Привет @tsuyoshi: Спасибо за вашу помощь. Теперь это исправлено. На самом деле, я загрузил последнюю версию Play Framework (я думаю, это было 2.4) и использовал простой шаблон для отдыха, и не знал, что шаблон с использованием 2.3 – Apin

Смежные вопросы