2010-08-13 12 views

Antwort

3

Es gibt jetzt auch ein fbconnect Modul, das auf Play's Website aufgeführt ist.

+0

ja, das wurde am 1.1 hinzugefügt. Vielen Dank :) –

10

Das neueste Spiel! Framework v1.2.2 enthält ein Beispiel mit dem Facebook OAuth2-Protokoll.

Hier ist ein Application-Controller mit OAuth2 Authentifizierung:

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"); 
    } 

} 

Viel Spaß!