8

所以我使用 scribe 连接到 Facebook (OAuth 2)。但是我无法获得授权令牌。在Play 的网站上,他们说

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

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

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

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

但是,身份验证密钥包含一个“?” 在网址中,所以我无法将其捕获为字符串。

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

4

2 回答 2

4

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

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在其中。

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

于 2012-04-13T00:45:55.200 回答
1

我不知道它是否有帮助,但我在 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...

于 2013-02-21T09:41:01.307 回答