嗨,有使用Akka-Http开发的服务。我必须向其中添加OAuth,并根据documentation,为此使用authenticateOAuth2

但是代码没有编译,并给出错误为


类型不匹配,预期值:(L)=> server.Route,实际值:(OauthInfo)=> server.Route


我找不到正确的解决方案来解决此问题。我什至尝试了文档example中提到的确切代码,但仍会引发类似的编译时错误。

我正在使用akka-http带圆圈。

这是我的代码:

def route(implicit system: ActorSystem, mat: ActorMaterializer): Route =
Route.seal {
  pathPrefix("newsletter-preferences") {
    authenticateOAuth2(realm = "Secure site", authenticator) { authInfo =>
      path("frequency" / LongNumber) { custNum =>
        authorize(hasScopes(authInfo)) {
          frequencyPreference(custNum) ~ addFreqPref(custNum)
        }
      } ~ path("pause" / LongNumber) { custNum =>
        authorize(hasScopes(authInfo)) {
          pauseInfo(custNum) ~ addPauseInfo(custNum) ~ unPauseUser(custNum)
        }
      }
    } ~
      path("health") {
        healthRoute()
      }
  }
}

def hasScopes(authInfo: OAuthInfo): Boolean = ???

def authenticator(credentials: Credentials)(
  implicit system: ActorSystem,
  mat: ActorMaterializer): Option[OAuthInfo] = {
credentials match {
  case p @ Credentials.Provided(token) =>
    ???
  case _ => None
}
}

最佳答案

这是IntelliJ中的错误。
该代码运行正常,但是由于某些原因,IntelliJ Idea会在其上显示错误。

关于scala - 无法使用Akka-Http验证OAuth2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46840206/

10-15 08:41