繁体   English   中英

如何在Play Framework 2.0中使用OAuth 2

[英]How to use OAuth 2 in Play Framework 2.0

所以我正在使用抄写员连接到 Facebook (OAuth 2)。 但是我在获取授权令牌时遇到问题。 Play 的网站上,他们说

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

但是,我不太确定该怎么做!

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

GET    /slivr_auth/*name        controllers.Application.getKey(name)

但是,授权密钥包含一个“?” 在 url 中,所以我无法将其捕获为字符串。

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

要回答您的具体问题,您可以通过调用以下方式获取请求(查询)参数:

Controller.request().queryString()

获取 OAuth2 很容易,但并不简单。 它有助于获得工作样本。 我建议下载 Play1,并查找 Facebook 身份验证示例。 然后将代码移植到 Play2。 我做了上面的事情,发现这个过程很有启发性。 您会意识到每个站点和 API 都有怪癖/需求,因此从一个站点到另一个站点似乎可用的附加代码很少。

一个更循序渐进的答案是有几个步骤。 首先,你需要得到一个access_token ,然后你就可以使用它了。 要获得access_token ,您需要将用户发送到站点授权 url,到目前为止 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=...

来自上述 url 的响应将包含access_token

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM