2012-07-02 6 views
3

Я новичок в использовании платформы Play Framework, и я пытаюсь включить плагин SecureSocial в свое приложение с помощью провайдера Facebook-OAuth2 , Я побежал в эту ошибку, когда я послал запрос GET к /login:Play Framework + SecureSocial: java.lang.NoSuchMethodError: securesocial.controllers.ReverseLoginPage.authenticate

! @6apkmf9m3 - Internal server error, for request [GET /login] -> 

play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[NoSuchMethodError: securesocial.controllers.ReverseLoginPage.authenticate(Ljava/lang/String;)Lplay/api/mvc/Call;]] 
    at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:134) [play_2.9.1.jar:2.0.2] 
    at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:115) [play_2.9.1.jar:2.0.2] 
    at akka.actor.Actor$class.apply(Actor.scala:318) [akka-actor.jar:2.0.2] 
    at play.core.ActionInvoker.apply(Invoker.scala:113) [play_2.9.1.jar:2.0.2] 
    at akka.actor.ActorCell.invoke(ActorCell.scala:626) [akka-actor.jar:2.0.2] 
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:197) [akka-actor.jar:2.0.2] 
Caused by: java.lang.NoSuchMethodError: securesocial.controllers.ReverseLoginPage.authenticate(Ljava/lang/String;)Lplay/api/mvc/Call; 
    at securesocial.core.IdentityProvider.authenticationUrl(IdentityProvider.scala:86) ~[classes/:na] 
    at securesocial.views.html.login$$anonfun$apply$3$$anonfun$apply$4.apply(login.template.scala:44) ~[classes/:na] 
    at securesocial.views.html.login$$anonfun$apply$3$$anonfun$apply$4.apply(login.template.scala:43) ~[classes/:na] 
    at play.templates.TemplateMagic$.defining(ScalaTemplates.scala:756) ~[templates_2.9.1.jar:2.0.2] 
    at securesocial.views.html.login$$anonfun$apply$3.apply(login.template.scala:43) ~[classes/:na] 
    at securesocial.views.html.login$$anonfun$apply$3.apply(login.template.scala:42) ~[classes/:na] 
  • Может кто-нибудь дать мне подсказку о том, где можно найти более подробную информацию об этой ошибке?
  • Как играть, работайте от securesocial.controllers.ReverseLoginPage до securesocial.controllers.LoginPage, с прежним существующим в модуле?
+0

Похоже, что ошибка указана в шаблоне входа. Не могли бы вы вставить это тоже? – Sietse

+0

это использование шаблона securesocial? https://github.com/jaliss/securesocial/blob/master/module-code/app/securesocial/views/login.scala.html – Alex

+0

да, возможно. – Sietse

ответ

4

От Play 2 documentation:

For each controller used in the routes file, the router will generate a ‘reverse controller’ in the routes package, having the same action methods, with the same signature, but returning a play.api.mvc.Call instead of a play.api.mvc.Action.

Я думаю, что это где ReverseLoginPage приходит от, но я понятия не имею, что терпит неудачу. Возможно, некоторая ошибка в маршрутах или старый класс, который все еще существует. Попробуйте запустить clean, чтобы быть уверенным, что это не так.

0

Даже я новичок в игре. Я не могу, почему прямо сейчас, но это связано с вашими файлами маршрутов. Это потому, что securesocial пытается вызвать действие, маршрут которого не указан в вашем конфиге. Попробуйте этот образец маршрута, может быть, попробуйте отладки, удалив маршруты, которые, по вашему мнению, не нужны один за другим, чтобы получить один маршрут, который вам не хватает.

# Routes 
# This file defines all application routes (Higher priority routes first) 
# ~~~~ 

# Home page 
GET /       controllers.Application.index() 




# Map static resources from the /public folder to the /assets URL path 
GET  /assets/*file    controllers.Assets.at(path="/public", file) 

# Login page 
GET  /login      securesocial.controllers.LoginPage.login 
GET  /logout      securesocial.controllers.LoginPage.logout 

# User Registration and password handling (only needed if you are using UsernamePasswordProvider) 
GET  /signup      securesocial.controllers.Registration.startSignUp 
POST /signup      securesocial.controllers.Registration.handleStartSignUp 
GET  /signup/:token    securesocial.controllers.Registration.signUp(token) 
POST /signup/:token    securesocial.controllers.Registration.handleSignUp(token) 
GET  /reset      securesocial.controllers.Registration.startResetPassword 
POST /reset      securesocial.controllers.Registration.handleStartResetPassword 
GET  /reset/:token    securesocial.controllers.Registration.resetPassword(token) 
POST /reset/:token    securesocial.controllers.Registration.handleResetPassword(token) 
GET  /password     securesocial.controllers.PasswordChange.page 
POST /password     securesocial.controllers.PasswordChange.handlePasswordChange 


# Providers entry points 
GET  /authenticate/:provider  securesocial.controllers.ProviderController.authenticate(provider) 
POST /authenticate/:provider  securesocial.controllers.ProviderController.authenticateByPost(provider) 
GET  /not-authorized    securesocial.controllers.ProviderController.notAuthorized 

Это работает для меня с игрой версии 2.2.0 и безопасным социальным на мастер-SNAPSHOT.