2012-04-04 32 views
8

Así que estoy usando Scribe para conectarme a Facebook (OAuth 2). Sin embargo, tengo problemas para obtener el token de autorización. En Play's website dicen queCómo usar OAuth 2 en Play Framework 2.0

"La versión 2 es lo suficientemente simple para implementarse fácilmente sin biblioteca o ayudantes".

Sin embargo, no estoy muy seguro de cómo hacerlo.

Intenté cambiar el archivo de rutas que enviaría la clave a un método integrado.

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

Sin embargo, la clave de autenticación contiene un '?' en la url, por lo que no puedo capturarlo como una cadena.

¡Cualquier ayuda o consejo sería apreciado!

+0

¿Has resuelto esto? – 030

+0

En caso de que esto ayude, el autor del libro "Play Framework Essentials", Julien Richard-Foy, ha incluido un [ejemplo] (https://github.com/julienrf/pfe-samples/blob/ea59bd7/pfe-scala /oauth/app/controllers/oauth/OAuth.scala) en el repositorio github del libro. No lo he mirado mucho ya que opté por usar Silhouette en su lugar, pero puede ofrecer algunas buenas ideas – acros

Respuesta

4

Para responder a su pregunta específica, puede obtener la solicitud (consulta) llamando parámetros:

Controller.request().queryString() 

Conseguir OAuth2 es fácil, pero no es trivial. Ayuda a tener una muestra de trabajo. Recomendaría descargar Play1 y buscar el ejemplo para la Autenticación de Facebook. Y luego transfiriendo el código a Play2. Hice lo anterior y encontré el proceso muy instructivo. Se dará cuenta de que cada sitio y API tiene peculiaridades/necesidades, por lo que hay muy poco código adicional que pueda utilizarse de un sitio a otro.

Una respuesta más paso a paso es que hay varios pasos. Primero, necesita obtener un access_token y luego puede usarlo. Para tener una access_token necesita enviar al usuario a la URL de los sitios de autorización, hasta ahora Facebook Este sería algo así como:

https://graph.facebook.com/oauth/authorize/?client_id=idFromFacebook&redirect_uri=http://yourdomain.com/auth 

Una vez que el usuario ha aceptado la autorización, el sitio redirige al usuario con un código, algo así como http://yourdomain.com/auth?code=XYZ_ABC. Luego, deberá solicitar desde la URL del token de acceso a sitios para obtener el token de acceso. Para Facebook esto sería algo así como:

https://graph.facebook.com/oauth/access_token?client_id=idFromFacebook&client_secret=secredFromFacebook&code=XYZ_ABC&redirect_uri=... 

La respuesta por parte de la URL anterior tendría el access_token en ella.

Ahora puede comenzar a usar el token de acceso para solicitar información.

1

No sé si podría ser útil, pero he creado un cliente de Play 2.x en Scala y Java que admite la autenticación de OAuth/CAS/OpenID/HTTP y la recuperación del perfil de usuario: https://github.com/leleuj/play-pac4j.

Para soporte OAuth, que está basado en Scribe y es compatible con Facebook, Twitter, Google, Yahoo, DropBox, Github, LinkedIn, Windows Live, WordPress ...

0

He comprobado varios ejemplos, pero this one obras de la caja.

  1. clon del repositorio
  2. navegar a samples/java/play-authenticate-simple-oauth
  3. crear Google credentials y añadir la clientId y clientSecret a conf/play-authenticate/mine.conf
  4. plazo sbt run
  5. navegar a localhost: 9000
  6. entrada
Cuestiones relacionadas