Java 如何在Play Framework 2.0中使用OAuth 2

Java 如何在Play Framework 2.0中使用OAuth 2,java,scala,playframework,Java,Scala,Playframework,所以我使用scribe连接到Facebook(OAuth 2)。但是,我在获取授权令牌时遇到问题。他们说 “版本2非常简单,无需库或助手即可轻松实现,” 然而,我不太清楚如何做到这一点 我尝试更改将密钥发送到构建方法的路由文件 GET /slivr_auth/*name controllers.Application.getKey(name) 但是,auth键在url中包含一个“?”,因此我无法将其捕获为字符串 任何帮助或建议都将不胜感激 要回答您的特定问题,您可以通过调用

所以我使用scribe连接到Facebook(OAuth 2)。但是,我在获取授权令牌时遇到问题。他们说

“版本2非常简单,无需库或助手即可轻松实现,”

然而,我不太清楚如何做到这一点

我尝试更改将密钥发送到构建方法的路由文件

GET    /slivr_auth/*name        controllers.Application.getKey(name)
但是,auth键在url中包含一个“?”,因此我无法将其捕获为字符串


任何帮助或建议都将不胜感激

要回答您的特定问题,您可以通过调用以下命令获取请求(查询)参数:

Controller.request().queryString()
获取OAuth2很容易,但并非微不足道。有一个工作样本是有帮助的。我建议下载Play1,并查找Facebook验证的示例。然后将代码移植到Play2。我做了上述工作,发现这个过程很有启发性。您将认识到每个站点和API都有其特殊性/需求,因此从一个站点到另一个站点似乎很少有其他可用的代码

一个更循序渐进的答案是,有几个步骤。首先,您需要获得一个
access\u令牌
,然后才能使用它。要获得
access\u令牌
,您需要将用户发送到站点授权url,到目前为止,这将类似于:

https://graph.facebook.com/oauth/authorize/?client_id=idFromFacebook&redirect_uri=http://yourdomain.com/auth
https://graph.facebook.com/oauth/access_token?client_id=idFromFacebook&client_secret=secredFromFacebook&code=XYZ_ABC&redirect_uri=...
一旦您的用户接受了授权,站点将使用类似
http://yourdomain.com/auth?code=XYZ_ABC
。然后需要从站点访问令牌url请求以获取访问令牌。对于Facebook来说,这将类似于:

https://graph.facebook.com/oauth/authorize/?client_id=idFromFacebook&redirect_uri=http://yourdomain.com/auth
https://graph.facebook.com/oauth/access_token?client_id=idFromFacebook&client_secret=secredFromFacebook&code=XYZ_ABC&redirect_uri=...
来自上述url的响应将包含
access\u令牌


现在,您可以开始使用访问令牌请求信息了。

我不知道它是否有用,但我已经在Scala和Java中创建了一个Play 2.x客户端,它支持OAuth/CAS/OpenID/HTTP身份验证和用户配置文件检索:


对于OAuth支持,它基于Scribe,支持Facebook、Twitter、Google、Yahoo、DropBox、Github、LinkedIn、Windows live、WordPress……

您解决了这个问题吗?如果有帮助,《Play Framework Essentials》一书的作者Julien Richard Foy在该书的Github repo中加入了一个。我并没有太多地研究它,因为我选择了使用剪影,但它可能会提供一些很好的见解