¿Quieres hacer login con Facebook en la parte servidor? Solo se necesita un poco de configuración para agilizar los inicio de sesión a tus usuarios. Para el acceso al API de Facebook he usado la siguiente librería java:
<dependency> <groupId>org.facebook4j</groupId> <artifactId>facebook4j-core</artifactId> <version>2.4.11</version> </dependency>
Inicio de sesión y redirección a otra página
Facebook LoginInicio de sesión y recarga de datos en la misma página mediante AJAX
Facebook Login with AJAX responsepackage es.carlosmontero.webapp.t5devutil.pages.javascript; import java.util.Locale; import org.apache.tapestry5.ComponentResources; import org.apache.tapestry5.annotations.Environmental; import org.apache.tapestry5.annotations.InjectComponent; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.annotations.SessionState; import org.apache.tapestry5.corelib.components.Zone; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.ThreadLocale; import org.apache.tapestry5.json.JSONObject; import org.apache.tapestry5.services.PageRenderLinkSource; import org.apache.tapestry5.services.ajax.AjaxResponseRenderer; import org.apache.tapestry5.services.javascript.JavaScriptSupport; import org.apache.tapestry5.services.javascript.ModuleConfigurationCallback; import es.carlosmontero.webapp.t5devutil.util.UserSession; public class FacebookLoginPage { @Environmental private JavaScriptSupport javaScriptSupport; @Inject private ThreadLocale threadLocale; @Inject private PageRenderLinkSource pageRenderLinkSource; @Inject private AjaxResponseRenderer ajaxResponseRenderer; @Inject private ComponentResources componentResources; @InjectComponent private Zone facebookResultZone; @SessionState(create = false) @Property private UserSession userSession; public void setupRender() { final String facebookLocale; if (threadLocale.getLocale().getLanguage().equals(new Locale("es").getLanguage())) { facebookLocale = "es_ES"; } else { facebookLocale = "en_US"; } javaScriptSupport.addModuleConfigurationCallback(new ModuleConfigurationCallback() { @Override public JSONObject configure(final JSONObject configuration) { final JSONObject facebookExports = new JSONObject(); facebookExports.put("exports", "FB"); configuration.getJSONObject("shim").put("facebook", facebookExports); final JSONObject facebookPath = new JSONObject(); facebookPath.put("facebook", "//connect.facebook.net/" + facebookLocale + "/sdk"); configuration.put("paths", facebookPath); return configuration; } }); if (userSession == null) { final String callback = pageRenderLinkSource.createPageRenderLink(FacebookCallbackPage.class) .toAbsoluteURI(); final String appId = "132569483831934"; final String afterLoginFacebookLink = pageRenderLinkSource.createPageRenderLink(FacebookUserPage.class) .toAbsoluteURI(); javaScriptSupport.require("facebook-login").with(appId, callback, afterLoginFacebookLink, "loginFacebookButton", "none"); javaScriptSupport.require("facebook-login").with(appId, callback, componentResources.createEventLink("updateUserData").toAbsoluteURI(), "loginFacebookAjaxButton", "facebookResultZone"); } } public void onUpdateUserData() { ajaxResponseRenderer.addRender(facebookResultZone); } public void onCloseSession() { userSession = null; } }