Menu

FB API: Cum implementam logarea prin facebook

Sa tot stai sa creezi conturi pe diferite site-uri este enervant, de aceea si multi renunta la a mai vizita un site din cauza lenei de a-si face un cont asa ca pe langa logarea simpla este recomandat sa aveti si logare prin Facebook/Google/Yahoo.

In cele ce vor urma vom planifica implementarea acestui [sa-i spunem] algoritm.

Partea ta - Baza de date

Aici trebuie sa-ti pui osul la munca! Eu doar iti voi prezenta conceptul, tu va trebui sa-i planifici implementarea.
Intelege ca aceasta trebuie sa fie o facilitate pe langa inregistrarea si logarea normala, trebuie sa ai si intregistrarea simpla.

In primul rand, in mod normal, avem un tabel unde pastram utilizatorii si datele lor. Tu trebuie sa mai creezi o coloana de tip INT in acel tabel in care vei salva id-ul contului de facebook al utilizatorului, daca este cazul. In caz ca nu are nici un id inseamna ca nu s-a inregistrat prin facebook deci nici nu se va putea loga prin facebook.
In caz ca ai o comunitate, nu lasa sa se inregistreze utilizatorii de pe facebook cu un nume deja ocupat, afiseaza-le o alerta ca acel nume este deja ocupat.
Nu este nevoie sa incluzi clasa facebook in toate paginile, ai nevoie de ea doar la inregistrare si la logare.
Cand loghezi un utilizator prin facebook verifici daca exista un utilizator cu id-ul de facebook la fel cu al celui ce s-a logat prin facebook, daca nu exista il inregistrezi si reincerci logarea.

Partea complicata - Facebook

Odata ce deja avem tot conceptul de la Partea ta - Baza de date trebuie sa vedem cum facem rost de datele vizitatorului de pe facebook.

Lucrul cu API-ul Facebook functioneaza simplu:
  • Ne cream o aplicatie
  • Setam aplicatia -> url-ul pentru redirect de exemplu
  • Stabilim datele din PHP: url-ul pentru redirect, datele aplicatiei, permisiunile necesare
  • Includem clasa facebook
  • Afisam link-ul de logare sau in caz contrar afisam datele de pe facebook


Facebook PHP SDK il downloadati de aici(unde este clasa Facebook) https://github.com/facebook/facebook-php-sdk

Pentru a crea o aplicatie intra pe https://developers.facebook.com/apps.
Apasa pe Creeaza o aplicatie noua


Completeaza campurile cu datele dorite de tine si apasa Continua


Completeaza corect codul captcha


Acum asteapta(dureaza cateva secunde).

Adauga id-ul aplicatiei si key-ul secret al aplicatiei intr-un fisier ca sa-l ai cat mai aproape(daca le pierzi le poti revedea oricand)


Acum:
  1. Apasa pe "Website cu Logare prin Facebook"
  2. Completeaza inputul pentru "Site URL"
  3. Apasa pe "Salveaza modificarile"



Apasa pe Avansat


In campul cu "Valid OAuth redirect URIs" vei completa cu adresa unde vrei sa-l redirectioneze pe utilizator dupa ce se logheaza. In exemplul nostru va fi pagina cu fisierul pentru exemplu.



Urmatoarele functii le vom folosii(unde vedeti Facebook-> inseamna ca ele apartin clasei facebook):
  • object Facebook->__construct(array $optiuni)
    Cand initializam o instanta a clasei Facebook. Argumente:
    • $optiuni - Array cu key-urile urmatoare:
      • appId - id-ul aplicatiei
      • secret - key-ul secret al aplicatiei
  • Facebook->api(...)
  • Aceasta metoda este mai complexa, cu aceasta metoda faceti o cerere Graph API.
  • int Facebook->getUser()
  • Returneaza id-ului userului curent(logat pe facebook prin intermediul aplicatiei tale) sau in caz ca nu este logat returneaza 0.
  • string getLoginUrl( array $optiuni )
  • Aceasta functie ne returneaza link-ul pentru loginul vizitatorului pe facebook. Tot cu aceasta functie stabilim permisiunile pe care sa i le cerem si URL-ul unde va face redirect(default este pagina actuala). Parametrii:
    • $optiuni - Array cu key-urile urmatoare:
      • scope - permisiunile de care avem nevoie
      • redirect_uri - URL-ul unde va fi redirectionat vizitatorul dupa ce se logheaza
      • display - page(default si recomandat cu PHP) sau popup(default si recomandat cu javascript)


Iar acum un exemplu in care doar logam un utilizator pe facebook prin aplicatia noastra si ii afisam numele si inca cateva date. Acest exemplu doar arata modul de lucru basic cu API-ul Facebook, tu faci restul! Nu fii leneș! Fă-l!.
<?php  
include 'src/facebook.php';

# Inceput - Editeaza aici #
$app_id 	= '286016548208146';
$app_secret = 'c8226237e25b68a1673155e57e4b9bd1';
# Sfarsit - Editeaza aici #

$fb = new Facebook(array(
		'appId' => $app_id,
		'secret' => $app_secret
	));

$user_id = $fb->getUser();

if($user_id){
	$profil = $fb->api('/me');
	echo '<pre>'.print_r($profil, true).'</pre>'; // afisam arrayul $profil
}  else{
	// In caz ca nu e logat returneaza 0 echivalent cu false
	echo '<a href="'.$fb->getLoginUrl().'">Login</a>';
}
?>
Am incercat sa pastrez codul cat mai scurt posibil, dupa cum vedeti cu doar cateva linii de cod am reusit sa facem rost de datele userului.
Daca vei da refresh la pagina unde ai adaugat codul de mai sus vei observa ca inca esti logat deoarece token-ul inca se pastreaza in sesiune($_SESSION).


Nu uita, daca ai orice intrebare despre acest articol abuzeaza de comentarii!


Ti-a placut articolul? Asigura-te ca-ti dam de veste cand publicam altele noi.


Tags: Tutoriale, Programare Web, Php

Comments Nota 5 din 1