所以我使用scribe连接到Facebook(OAuth 2)。但是我无法获取授权令牌。在Play's website,他们说
“版本2非常简单,无需库或助手即可轻松实现”。
但是,我不太清楚如何做到这一点!
我尝试更改将密钥发送到构建方法的路由文件。
GET /slivr_auth/*name controllers.Application.getKey(name)
但是,auth键包含'?'在网址中,所以我无法将其捕获为字符串。
任何帮助或建议都将不胜感激!
答案 0 :(得分:4)
要回答您的具体问题,您可以通过调用以下方式获取请求(查询)参数:
Controller.request().queryString()
获取OAuth2很简单但不容易。有一个工作样本是有帮助的。我建议下载Play1,然后查找样本进行Facebook身份验证。然后将代码移植到Play2。我做了上述工作,发现这个过程非常有启发性。您将意识到每个站点和API都有怪癖/需求,因此几乎没有其他代码可以从一个站点到另一个站点使用。
更为循序渐进的答案是,有几个步骤。首先,您需要获得access_token
,然后才能使用它。要获得access_token
,您需要将用户发送到网站授权网址,到目前为止,facebook会是这样的:
https://graph.facebook.com/oauth/authorize/?client_id=idFromFacebook&redirect_uri=http://yourdomain.com/auth
用户接受授权后,网站会使用代码重定向用户,例如http://yourdomain.com/auth?code=XYZ_ABC
。然后,您需要从站点请求访问令牌URL以获取访问令牌。对于Facebook来说,这将是:
https://graph.facebook.com/oauth/access_token?client_id=idFromFacebook&client_secret=secredFromFacebook&code=XYZ_ABC&redirect_uri=...
上述网址的响应中会包含access_token
。
现在,您可以开始使用访问令牌来请求信息。
答案 1 :(得分:1)
我不知道它是否有用,但我在Scala和Java中创建了一个支持OAuth / CAS / OpenID / HTTP身份验证和用户配置文件检索的Play 2.x客户端:https://github.com/leleuj/play-pac4j。< / p>
对于OAuth支持,它基于Scribe并支持Facebook,Twitter,Google,Yahoo,DropBox,Github,LinkedIn,Windows Live,WordPress ......
答案 2 :(得分:0)
我检查了多个示例,但this one开箱即用。
$
samples/java/play-authenticate-simple-oauth
和clientId
添加到clientSecret
conf/play-authenticate/mine.conf