2010-08-13 22 views
7

Tôi đang học bằng cách sử dụng Play Framework và làm một ứng dụng demo cho nó.Thư viện để Tích hợp đăng nhập Facebook với Khung Chơi?

Đối với ứng dụng này, tôi cũng muốn tích hợp với API Facebook, cho phép người dùng đăng nhập bằng Facebook Id. Biết rằng Play là một khuôn khổ không trạng thái và cách nó hoạt động, có một số thư viện hoặc mô-đun được đề nghị không?

Tôi không thể tìm thấy bất kỳ điều gì nhưng tôi chỉ yêu cầu phòng trường hợp.

Trả lời

3

Hiện cũng có một mô-đun fbconnect được liệt kê trên trang web của Play.

+0

có, đã được thêm vào 1.1. Cảm ơn :) –

10

Lần phát gần nhất! Framework v1.2.2 chứa một mẫu với giao thức Facebook OAuth2.

Đây là một bộ điều khiển ứng dụng với xác thực 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"); 
    } 

} 

Thưởng thức!

Các vấn đề liên quan