【问题标题】:Play Scala Oauth Provider Error播放 Scala Oauth 提供程序错误
【发布时间】:2015-08-17 13:17:05
【问题描述】:

我正在构建一个 Play Scala 项目,并且需要对应用程序进行身份验证。 我正在使用这个:https://github.com/nulab/scala-oauth2-provider 作为 Oauth Provider 库。 我已经根据文档实现了所有内容。但是当在下面的控制器上实现 Auth 时:

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

当我访问 localhost/token 时,我得到了这个错误:

这里是来自控制台的错误:

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]

我已经实现了文档所说的一切。抱歉,我实际上是 Scala 和 Play it self 的新手。

【问题讨论】:

    标签: scala oauth playframework


    【解决方案1】:

    你用什么Play和scala-oauth2-provider版本?

    错误看起来 Play 版本不同。 如果你使用 Play 2.3,你应该在 scala-oauth2-provider 中使用 0.14.0。

    请参阅自述文件。

    【讨论】:

    • 嗨@tsuyoshi:感谢您的帮助。现在修好了。其实我是下载最新的Play Framework(我猜是2.4),用simple-rest模板,不知道模板用的是2.3
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2012-01-09
    相关资源
    最近更新 更多