带有安全社交和 Facebook 登录的 Scala 2.2.4

Scala 2.2.4 with Secure Social and Facebook login

我接手了一个使用 SecureSocial 2.1.4 并且 运行ning Scala 2.2.4

的项目

我查看了更新,并决定由于应用程序如此年久失修并且很长时间没有更新,我只是用不同的语言重建(我几乎没有做过 Scala) .

今天,Facebook API 的更新似乎导致登录中断。

我正在尝试找出恢复登录的最快途径,但无法确定要更新到的最佳版本是什么,以及如何使它与最简单的 scala 版本一起很好地工作。

在Build.scala中显示

"ws.securesocial" %% "securesocial" % "2.1.4",
"com.typesafe" %% "play-plugins-mailer" % "2.2" exclude("org.scala-stm", "scala-stm_2.10.0"),

当我尝试更新到 2.10 时,我得到

[warn]  :: ws.securesocial#securesocial_2.10;2.10: not found
[warn]  :: com.typesafe#play-plugins-mailer_2.10;2.2: not found

在play.plugins中有

1500:com.typesafe.plugin.CommonsMailerPlugin    
9994:securesocial.core.DefaultAuthenticatorStore
9995:securesocial.core.DefaultIdGenerator

我确实设法使用

获得了一个构建
"ws.securesocial" %% "securesocial" % "M3.0-M1"

当我 运行 使用 securesocial 2.1.4 的应用程序并尝试登录时,我看到的唯一错误是 无法登录用户。抛出异常

    [error] application - Unable to log user in. An exception was thrown
securesocial.core.AuthenticationException: null
    at securesocial.core.OAuth2Provider.doAuth(OAuth2Provider.scala:117) ~[securesocial_2.10-2.1.4.jar:2.1.4]
    at securesocial.core.IdentityProvider.authenticate(IdentityProvider.scala:75) ~[securesocial_2.10-2.1.4.jar:2.1.4]
    at securesocial.controllers.ProviderController$$anonfun$handleAuth.apply(ProviderController.scala:92) [securesocial_2.10-2.1.4.jar:2.1.4]
    at securesocial.controllers.ProviderController$$anonfun$handleAuth.apply(ProviderController.scala:88) [securesocial_2.10-2.1.4.jar:2.1.4]
    at play.api.mvc.ActionBuilder$$anonfun$apply.apply(Action.scala:221) [play_2.10-2.2.4.jar:2.2.4]
    at play.api.mvc.ActionBuilder$$anonfun$apply.apply(Action.scala:220) [play_2.10-2.2.4.jar:2.2.4]

最终的解决方案是,如果我可以更新我的模型以适应 facebook 对 API

的新更改

----------------更新----------------

做更多的研究,看来问题可能是 Facebook 正在返回有效的 JSON 令牌,而不是像以前那样 url 编码的

https://developers.facebook.com/docs/apps/changelog#v2_3

现在,只是想弄清楚如何在 scala 或 secure_social

中更新它

由于您使用的是 2.1.4,我建议您创建一个新的 Facebook 提供程序,它不会覆盖 OAuth2Provider 中的 buildInfo 方法并注册它而不是内置的。

那应该会让你走得相当快。