2010-08-13 4 views
7

Estoy aprendiendo usando Play Framework y haciendo una aplicación de demostración para ello.Biblioteca para integrar el inicio de sesión de Facebook con Play Framework?

Para esta aplicación también quiero integrarme con la API de Facebook, lo que permite a los usuarios iniciar sesión usando Facebook Ids. Sabiendo que Play es un marco sin estado y la forma en que funciona, ¿se recomienda alguna biblioteca o módulo?

No he podido encontrar ninguna pero pregunto por las dudas.

Respuesta

3

Ahora también hay un módulo fbconnect listado en el sitio de Play.

+0

sí, eso fue agregado el 1.1. Gracias :) –

10

¡La última obra! Framework v1.2.2 contiene una muestra con el protocolo Facebook OAuth2.

Aquí es un controlador de aplicaciones con autenticación OAuth2:

import models.User; 
import play.Logger; 
import play.libs.OAuth2; 
import play.libs.WS; 
import play.mvc.Before; 
import play.mvc.Controller; 

import com.google.gson.JsonObject; 

public class Application extends Controller { 

    // The following keys correspond to a test application 
    // registered on Facebook, and associated with the loisant.org domain. 
    // You need to bind loisant.org to your machine with /etc/hosts to 
    // test the application locally. 

    public static OAuth2 FACEBOOK = new OAuth2(
      "https://graph.facebook.com/oauth/authorize", 
      "https://graph.facebook.com/oauth/access_token", 
      "95341411595", 
      "8eff1b488da7fe3426f9ecaf8de1ba54" 
    ); 

    public static void index() { 
     User u = connected(); 
     JsonObject me = null; 
     if (u != null && u.access_token != null) { 
      me = WS.url("https://graph.facebook.com/me?access_token=%s", WS.encode(u.access_token)).get().getJson().getAsJsonObject(); 
     } 
     render(me); 
    } 

    public static void auth() { 
     if (OAuth2.isCodeResponse()) { 
      User u = connected(); 
      OAuth2.Response response = FACEBOOK.retrieveAccessToken(authURL()); 
      u.access_token = response.accessToken; 
      u.save(); 
      index(); 
     } 
     FACEBOOK.retrieveVerificationCode(authURL()); 
    } 

    @Before 
    static void setuser() { 
     User user = null; 
     if (session.contains("uid")) { 
      Logger.info("existing user: " + session.get("uid")); 
      user = User.get(Long.parseLong(session.get("uid"))); 
     } 
     if (user == null) { 
      user = User.createNew(); 
      session.put("uid", user.uid); 
     } 
     renderArgs.put("user", user); 
    } 

    static String authURL() { 
     return play.mvc.Router.getFullUrl("Application.auth"); 
    } 

    static User connected() { 
     return (User)renderArgs.get("user"); 
    } 

} 

Enjoy!

Cuestiones relacionadas