我正在学习使用Play Framework并为它做一个演示应用程序。
对于这个应用程序,我还想与 Facebook API 集成,允许用户使用 Facebook Ids 登录。知道 Play 是一个无状态框架及其工作方式,有一些库或模块推荐吗?
我找不到任何东西,但我问一下以防万一。
我正在学习使用Play Framework并为它做一个演示应用程序。
对于这个应用程序,我还想与 Facebook API 集成,允许用户使用 Facebook Ids 登录。知道 Play 是一个无状态框架及其工作方式,有一些库或模块推荐吗?
我找不到任何东西,但我问一下以防万一。
最新玩!Framework v1.2.2 包含一个带有 Facebook OAuth2 协议的示例。
这是一个具有 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");
}
}
享受!
RestFB是我的首选。
Facebook Java API也应该这样做。
Play 网站上现在还列出了一个fbconnect模块。
您还可以查看http://code.google.com/p/socialauth/。看起来很有希望。