¿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;
}
}