łatka do pobrania

Facebook Login API


Facebook Login API pozwala użytkownikom zarejestrować się lub zalogować do swojej aplikacji za pomocą swojej tożsamości na Facebooku.

Facebook Login wykorzystuje OAuth 2.0 do obsługi uwierzytelniania i autoryzacji. Twoja aplikacja może poprosić o dostęp do danych użytkownika za pośrednictwem różnych zakresów autoryzacji udostępnianych przez interfejs API.

Zanim zaczniesz wdrażać API przy użyciu zestawu SDK JavaScript, potrzebujesz identyfikatora aplikacji Facebook, który możesz utworzyć i pobrać w panelu aplikacji. Następnie umieszczamy go w kodzie zamiast 'YOUR APP ID'  oraz jego wersje 'YOUR API VERSION' .


...
    FB.init({
        appId : 'YOUR APP ID',
        cookie : true,  
        xfbml : true,
        version : 'YOUR API VERSION'
    });         
...


Dzięki czemu mamy możliwość autoryzacji użytkowników przez protokół OAuth.

Funkcjonalności:
autoryzacja użytkownika z Facbook'a
pobiera informacje o użytkowniku z Facebook'a

Załącznik zawiera przykład użycia, bibliotekę i instrukcję implementacji w folderze instalacyjnym.

Prosty przykład wykorzystania Facebook Login API.

 

OAuth 2.0

// Spprawdzenie statusu połączenia użytkownika z Facebookiem.
// Jeśli użytkownik jest połączony, nasepuje przekazanie accessTokena uwieżytelniającego użytkownika.
function statusChangeCallback(response) {
if (response.status === 'connected') {
jq.ajax({
type: "POST",
url: '$page.url("api.facebook.ApiFbController","&requestHandler=loggingInFacebook")',
data: "&accessToken="+response.authResponse.accessToken,
dataType: "json",
success: function(resp){
if(resp.data.res==1){
alert('Jesteś użytkownikiem już zarejestrowanym.');
window.location.href=resp.data.link
}else if (resp.data.res==0){
alert('Jesteś nowym użytkownikiem.');
window.location.href=resp.data.link
}else{
alert('Email jest wymagany.');
}
},
error: function(error){
alert("jq.ajax ERROR");
}
});
}
}
// Funkcja sprawdzająca czy po naciśnięciu przycisku zaloguj nasstąpiło pomyślen połączenie z facebookiem.
function checkLoginState() {
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
}

// Konfiguracja połączenia do Facebook SDK.
// AppID i wersje otrzymujemy przy tworzeniu konta na stronie deweloperskiej Facebooka.
// AppID jest wymagane i indywidualne dla każdej aplikacji, która posiada logowanie przez Facebooka.
window.fbAsyncInit = function() {
FB.init({
appId : 'YOUR APP ID',
cookie : true,
xfbml : true,
version : 'YOUR API VERSION'
});
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
};

// Załadowanie SDK Facebooka.
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "https://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

// Zmiana funkcji oclick: jeśli użytkownik jest zalogowany to przycisk zaloguj zostanie zastąpiony linkiem wyloguj.
function getFbUserData(){
document.getElementById('fbLink').setAttribute("onclick","fbLogout()");
document.getElementById('fbLink').innerHTML = 'Logout from Facebook';
}

// Zmiana funkcji oclick: jeśli użytkownik został wylogowany to link wyloguj zostaje zastąpiony przyciskiem zaloguj.
function fbLogout() {
FB.logout(function() {
document.getElementById('fbLink').setAttribute("onclick","fbLogin()");
});
}
 

ApiFbController - jPALIO™ Groove



package api.facebook;

import palio.*;
import palio.modules.*;
import jpalio.mvc.*;
import jpalio.mvc.annotations.*;
import api.facebook.dao.*;
import universal.model.*;
import palio.pelements.PUser;
import palio.pelements.PSession;

import api.facebook.restFb.UserProfile;
import api.facebook.restFb.GetUserDetails;

public class ApiFbController extends Controller {

private static final User user = Groovy.module("user")
private static final Page page = Groovy.module("page")

// Funkcja logowania do Facbooka
@RequestHandler(view=["portal.view.accounting.mvc.view.jsonResponse"])
public Object[] loggingInFacebook (@RequestParam(name="accessToken") String accessToken){
// Tworzy profil logowanego uzytkownika.
GetUserDetails objGetUserDetails = new GetUserDetails();
// Tworzy obiekt i na podstwie access token pobiera dane uzytkownika do obiektu.
UserProfile objUserProfile = objGetUserDetails.getProfileInfo(accessToken);
// Pobiera email wczesniej utworzonego uzytkowniak do kolejnych instrukcji.
String email = objUserProfile.getEmail();
Map mapa = [:] as Map;
try{
// Sprawdza czy uzytkownik wyrazil zgode na udostepnienie emaila. Jezeli nie to zwraca odp "3".
if(email){
// Sprawdza czy uzytkownik jest juz zarejestrowany. Jezeli tak to pobiera jego dane (odp "1") lub importuje go do BD (odp "0").
if(ApiFbDao.checkingIfUserExists(email)){
ApiFbDao.getUserDataFromDB(email);
mapa["res"] = 1;
}else {
ApiFbDao.setFbDataToBase (objUserProfile.getFirstName(),objUserProfile.getLastName(), objUserProfile.getEmail());
mapa["res"] = 0;
}
}else{
mapa["res"] = 3;
}
// Tworzy nową sesje i zwraca jej sessionId.
Long sessionId = creatingNewSesion(email)
// Przekazanie url do skryptu przez Json i przekierowanie strony przez parametr "pageCode".
// Paramtr "pageCode" ustawiany w pliku konfiguracyjnym ("api.facebook.config.Configuration").
mapa['link'] = page.url(api.facebook.config.Configuration.getParam("pageCode"))

return [new JsonResponse(
correct : true,
info : 'Json : Pobrano dane',
data : mapa as Map
)] as Object[]
}catch(Exception e){
return [new JsonResponse(
correct : false,
info : e.getMessage()
)] as Object[]
}
}

private Long creatingNewSesion ( String login){
Long sessionId = user.createSession(login)
PSession session = Instance.getCurrent().getInstance().getSession(sessionId)
// Otwiera obiekt "sessionParams" przekazany przez parametr "setParamObject".
// Paramtr "setParamObject" ustawiany w pliku konfiguracyjnym ("api.facebook.config.Configuration").
Groovy.object(api.facebook.config.Configuration.getParam("setParamObject"),sessionId)
return sessionId
}

@RequestHandler(defaultHandler = true, view="api.facebook.ApiFbLogin")
public Object[] defaultHandler(){
return null
}

public void handleException(Exception ex){
palio.Groovy.object("portal.view.accounting.mvc.view.error", ex)
}
}



Powrót