Autentificarea utilizatorilor cu Facebook Connect și Google Friend Connect

Cele mai multe rețele sociale au instrumente API care permit aproape orice site web să autentifice utilizatorii prin intermediul sistemului lor. În tutorialul de astăzi, vom învăța cum să folosiți aceste instrumente. Utilizând un model de comentariu simplu, utilizatorii vor învăța cum să lase un comentariu în profilurile lor Facebook sau Google.

Aplicația

Pe scurt, voi trece peste aplicația demo. Am o pagină HTML foarte simplă, statică, care arată o fotografie și permite utilizatorului să comenteze. Într-o aplicație reală, probabil că veți salva comentariile într-o bază de date, dar din motive de demonstrație le salvez doar într-un fișier text, fiecare rând reprezentând un comentariu nou. Acest cod nu este deosebit de important până când nu ajungeți la formularul de comentariu.

 # index.php ... 

Adauga un comentariu

Nume:
Cometariu:
...

Aici vedeți că avem un formular de bază cu patru câmpuri: nume, adresă URL, imagine și comentariu. Am ales să ascund câmpurile url și imagine, deoarece acestea sunt date pe care le vom obține de pe Facebook și Google Friend Connect. Formularul este trimis la un fișier PHP, savecomment.php, pe care nu o voi trece, dar este inclusă în descărcare. În esență, toate datele postate și stochează într-un fișier de date de comentarii existente cu țeavă, "|", caractere care separă fiecare câmp. Din nou, nu o tehnică practică, dar suficientă pentru scopurile noastre. Un pic peste formular vom lista toate comentariile din acest fișier prin includerea unui alt script PHP, readcomments.php.

 # index.php ... 

Comentarii

...

O ultimă bucată de cod pe care trebuie să ne uităm este JavaScript-ul inclus. Toată autentificarea noastră se face pe partea clientului, așa că am creat application.js să dețin codul responsabil pentru asta și să mă salvez de la scrierea prea multă JavaScript am inclus jQuery (prin Google).

 # index.php --- ...   

Actualizarea paginii pentru a afișa informațiile despre utilizator.

După crearea acestui lucru, putem trece la application.js fișierul menționat anterior. Am hotărât că ar fi mai bine să creezi o funcție pentru fiecare serviciu care a înfășurat toată logica necesară autentificării. Apoi, după ce le-am creat pentru ambele servicii, am extras cod comun pentru a păstra codul concis. După crearea fișierului declarați o funcție numită update_userbox ()

 # application.js --- // Actualizări generice #userbox cu informații preluate // din funcția de servicii update_userbox (nume, imagine, url, logout) // populează datele în #userbox și arată $ ('# userbox') .html (""+""+" Logat ca "+ nume +" "+" (logout) ") .show (); // ascunde nume de intrare și service // butoane de login $ ('# userinfo'). valorile intrărilor // folosind date din serviciul $ ('# nume'). val (nume); $ ('# url'); val (url); $ ('# imagine'); 

Această funcție este generică și poate fi utilizată fie cu serviciul, fie cu mai multă primăvară, care poate fi folosită și în altele. Scopul acestui lucru este de a insera HTML într-un div div numit #userbox astfel încât utilizatorul are o înțelegere vizuală că au accesat un serviciu. Aceasta se face prin ascunderea căsuței cu numele și prin afișarea unei imagini de profil de la serviciul la distanță împreună cu numele acestora și printr-o legătură de logout pentru a vă deconecta de la serviciu. De asemenea, în spatele scenei vom completa numele, url și intrările de imagini astfel încât acestea să fie trimise la server împreună cu comentariul pentru salvarea în fișierul bazei noastre de date. Puteți vedea că acest lucru se face prin trecerea în patru variabile:

  • nume: numele utilizatorului pe care l-au furnizat serviciului
  • imagine: un url la imaginea de profil a utilizatorului
  • url: o adresă URL la profilul utilizatorului din serviciu
  • deconectare: un șir de cod JS care se execută atunci când este apăsat jurnalizarea

Toate acestea sunt destul de simple, cu excepția variabilei de ieșire. Acest lucru poate fi explicat atunci când vă uitați la API-urile oferite de FB și GFC. Fiecare are funcția care va notifica serviciul pe care utilizatorul dorește să i-l deconecteze, așa am ales să treacă acel apel în funcția de logout.

Facebook Connect - Obținerea cheii API

Vom începe cu Facebook Connect. Primul lucru pe care trebuie să-l facem este să creați o aplicație pe site-ul dezvoltatorilor Facebook. Pare un pic ciudat la inceput ca trebuie sa cream o aplicatie Facebook pentru acest lucru, dar din punctul meu de vedere, este doar sa primesc cheia API si sa-ti inregistrez URL-urile cu programul lor de dezvoltare.

După ce ați creat aplicația, trebuie să editați câteva setări, în partea stângă a ecranului veți vedea file, faceți clic pe Conectare. Aici trebuie să introduceți Conectați adresa URL care este adresa URL unde există rădăcina site-ului dvs. De asemenea, am ales să încărc o imagine și recomand tuturor site-urilor să facă acest lucru, deoarece vă oferă o anumită marcă vizuală.

Acum puteți salva aceste modificări și vă va duce la pagina cu rezumatul aplicației. Aici găsim cheia API a aplicației, deci mergeți mai departe și copiați-o în clipboard.

Adăugarea unui receptor încrucișat

Facebook a proiectat API-ul de conectare pentru a lucra în întregime pe partea clientului. Acest tutorial nu va necesita cod de parte server pentru a autentifica utilizatorii. Acest lucru se face prin intermediul unor tehnici complicate AJAX, în care Facebook transmite date înapoi și înapoi prin iframe pentru a eluda aceeași politică de origine implementată de majoritatea browserelor. O parte a acestui proces presupune plasarea pe serverul nostru a unui fișier pe care Facebook îl poate interacționa pentru a ne confirma identitatea. Deci, la cel mai înalt nivel al domeniului dvs. creați un fișier numit xd_receiver.html și introduceți acest cod.

 # xd_receiver.html --- 
       

Butonul de conectare Facebook

Facebook ne obligă să trecem prin câteva cercuri pentru a obține totul de lucru, mai întâi de care trebuie să includeți un fișier JS de pe site-ul Facebook și să rulați funcția init () în index.php fișier în partea de jos, chiar deasupra închiderii etichetă.

 # index.php ---   

Există câteva lucruri la care trebuie să ne uităm în această funcție. În primul rând, asigurați-vă că le înlocuiți FB_API_KEY cu cheia API. Apoi avem un șir reprezentând calea către fișierul nostru de receptor încrucișat, care ar trebui să fie la baza directorului de aplicații. În cele din urmă, putem trece un șir de opțiuni. Vrem să menținem starea de conectare a utilizatorilor, astfel încât să îi spunem lui Facebook să ruleze o funcție auth_using_fb (vom crea acest lucru în câteva momente) dacă utilizatorul este deja conectat la site-ul nostru. Acest lucru înseamnă că, dacă utilizatorul reîncarcă pagina, acesta va afișa în continuare ca fiind conectat, astfel încât să nu fie nevoit să se reînscrie pe fiecare pagină.

Apoi trebuie să creați butonul de conectare real, acest lucru necesită utilizarea XFBML, Facebook Markup Language, care este o extensie a HTML. X indică un cod care este introdus pe site-uri terțe părți și nu pe site-ul Facebook. Undeva pe pagină trebuie să introducem eticheta Fb: buton de conectare și câteva opțiuni.

 

Am ales să o pun pe lângă numele casetei de text, astfel încât utilizatorul să poată vedea cu ușurință atunci când merge pentru a adăuga un comentariu. Observați că avem două atribute lungime și onlogin. Lungime ne permite să specificăm textul de pe buton și are două opțiuni: scurtă (implicită) și lungă. Scurt spune Conectați și spune lung Conecteaza-te cu Facebook. Onlogin funcționează foarte mult onclick sau onMouseOver și ne permite să executați JS atunci când utilizatorul se autentifică cu succes prin intermediul site-ului nostru prin Facebook. Noi numim aceeași funcție pe care am menționat-o mai devreme, auth_using_fb (), dar înainte de a putea crea ceea ce trebuie să facem încă o schimbare. În partea de sus a paginii în eticheta HTML trebuie să-i spunem browser-ului că folosim mai mult de un limbaj de markup.

 # index.php --- 

Atributul xmlns specifică spațiul de nume xml pentru document. Primul este standardul xhtml, iar al doilea este noul limbaj de marcare facebook, ceea ce face ca documentul nostru W3C să fie compatibil.

Scrierea Javascript-ului

Acum ne vom întoarce application.js și scrieți auth_using_fb () funcţie.

 # application.js --- // Funcția Facebook Connect auth_using_fb () // obține datele utilizatorilor din FB var viewer = FB.Facebook.apiClient.fql_query ('SELECT nume, pic_square_with_logo, profile_url FROM user WHERE uid =' + FB .Facebook.apiClient.get_session (). Uid, funcția (rezultate) update_userbox (rezultate [0] .name, rezultate [0] .pic_square_with_logo, results [0] .profile_url, "FB.Connect.logoutAndRedirect .php "; return false; ')); 

Aceasta este funcția pe care o folosim pentru a interfața cu datele din Facebook și pentru a recupera datele utilizatorilor. Butonul de conectare pe care l-am creat mai devreme are de fapt funcționalitatea pentru semnarea utilizatorului în Facebook, dar dacă doriți să luați informațiile despre utilizator, trebuie să îl solicitați separat. Prima linie de cod în funcție este un apel la metoda API Facebook, fql_query (). Această funcție ne permite să folosim limbajul de interogări SQL ca Facebook pentru a prelua datele utilizatorului. Avem nevoie doar de cele trei coloane pe care le-am discutat mai devreme: nume, imagine și url. Wiki-ul Facebook Developer are o pagină care conține toate tabelele pe care le puteți căuta informații. Este important să adăugați UNDE care limitează la utilizatorul conectat în prezent. Al doilea parametru al lui fql_query este o funcție de apel invers care este trecut printr-o serie de rezultate. Trebuie doar să luăm primul rezultat în matrice și să trimitem fiecare proprietate către noi update_userbox () funcția împreună cu apelul JS de deconectare. Este important să includeți "return false"; după apelul logoutAndRedirect (), deoarece altfel determină reîncărcarea paginii înainte ca API să poată deconecta utilizatorul.

Și, uimitor, este tot ce trebuie să facem pentru Facebook Connect pentru a lucra, continuați și încercați!

Google Friend Connect - cheia API

La fel ca Facebook Connect, Google Friend Connect ne cere să ne înscriem pentru o cheie API. Acest lucru este mult mai rapid decât Facebook Connect, deoarece acestea au un expert ușor de utilizat care vă umblă prin toate. Mai întâi trebuie să furnizați numele aplicației și URL-ul la fel ca în Facebook Connect.

În continuare, vă instruiește să încărcați câteva fișiere pe serverul dvs. pentru asistență AJAX pe mai multe domenii, din nou la fel ca Facebook Connect. Văzând o tendință aici?

Ultimul pas va verifica dacă totul este configurat corect. Google cheamă cheia API ID-ul site-ului, dar acționează exact aceeași chei API Facebook.

Inclusiv fișierele necesare

Apoi trebuie să includeți fișierele JS corecte în partea de jos a paginii noastre după fișierele Facebook. De asemenea, trebuie să implementăm metoda initOpenSocialApi () a API-ului Friend Connect Google. Acest lucru necesită un parametru sub forma unui set de opțiuni. Singura opțiune necesară este teren care este ID-ul site-ului pe care l-am colectat mai devreme.

 # index.php ---    

De asemenea, trebuie să afișăm o pagină într-o funcție de apel inversă pentru a fi executată atunci când utilizatorul este autentificat cu Google Friend Connect. În plus, trebuie să apelăm o funcție care face butonul pentru semn, aceasta este foarte asemănătoare cu marcajul XFBML pe care l-am folosit mai devreme, cu excepția faptului că Google a hotărât să rămână cu HTML simplu. Această funcție presupune transmiterea unui ID DOM al elementului în care se dorește crearea butonului de conectare, am făcut un div imediat sub butonul de autentificare FB cu un id de google-logare. De asemenea, trecem în stil: „lung“ astfel încât să fie similar cu butonul Facebook.

 

Scrierea JavaScript-ului

Google Friend Connect este similar în multe privințe cu Facebook Connect, ceea ce, bineînțeles, face munca noastră mai ușoară. O diferență de limbă pe care am descoperit-o este că API-ul Google tinde să fie un pic mai detaliat în natură, astfel încât vom împărți explicația noastră auth_using_gfc () în două părți.

 // Funcția Google Friend Connect auth_using_gfc () // Cereți GFC să trimită date suplimentare de profil var params = ; paramurile [opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [opensocial.Person.Field.URLS]; // Creați o solicitare de preluare a vizualizatorului curent. vară req = opensocial.newDataRequest (); req.add (req.newFetchPersonRequest ('VIEWER', paramuri), 'viewer_data'); ... 

Primul lucru pe care îl facem este să declarăm params variabilă ca o hash goală. Aceasta va conține opțiunile pe care trebuie să le trimitem cu cererea noastră către Google, deoarece, în mod implicit, nu primim adresa URL a profilului utilizatorului. Apoi vom crea un obiect de cerere care va face efectiv cererea către Google pentru datele de profil ale utilizatorului. adăuga() metoda ia două argumente a newFetchPersonRequest () obiect și apoi un șir unic pentru a identifica datele. VIEWER este o constantă reprezentând utilizatorul conectat în prezent.

 // Trimiteți cererea req.send (funcția (date) // Dacă data_data a avut o eroare, atunci utilizatorul nu este conectat dacă (! Data.get ('viewer_data')) a avutError ()) // obține datele utilizatorului din GFC var viewer = data.get ('viewer_data') getData (); update_userbox (viewer.getDisplayName (), viewer.getField (opensocial.Person.Field.THUMBNAIL_URL), viewer.getField (opensocial.Person.Field .URLS) [0] .getField ("adresa"), "google.friendconnect.requestSignOut () '););

Ultima parte a funcției este cererea efectivă de date, folosind trimite() care ia un argument al unei funcții de apel invers. Declarăm funcția în linie și avem o instrucțiune dacă verifică dacă vremea a primit o eroare. Dacă nu presupunem că totul a mers bine și declarăm o variabilă numită vizualizare care ține datele primite din cerere. Aceste date sunt apoi transmise către noi update_userbox () funcţie. Singurul lucru pe care trebuie să-l reținem este al treilea argument care trece în adresa URL a utilizatorului. Google permite utilizatorilor să introducă mai multe adrese URL de profil (cum ar fi Facebook, Twitter etc.) și avem nevoie doar de primul URL care este adresa URL a profilului Google. Argumentul final este șirul nostru de JS de a executa acele semne de utilizator care, de asemenea, reloads pagina.

Acesta este tot ce trebuie să facem, deci mergeți mai departe și încercați! Un lucru foarte frumos pe care îl veți observa este că utilizatorii nu trebuie să aibă un cont Google pentru a se conecta, de asemenea, pot utiliza conturile AOL / AIM, Yahoo !, Netlog sau Open ID.

Concluzie

Deși acest exemplu specific nu este pregătit pentru producție, sperăm că puteți vedea cât de ușor ar fi pentru noi să implementăm acest lucru în aplicațiile existente. Îi încurajez pe toți să se uite bine la oferta de documentație Facebook și Google.

  • Facebook Connect Documentație
  • FBC Tutorial
  • Simulatorul FQL
  • Documentația Google Friend Connect
  • Cod exemplu GFC
  • GFC Simulator

Sper că v-ați bucurat de acest tutorial și, dacă există suficient interes, voi scrie un tutorial de urmărire a modului în care aceasta poate fi integrată ulterior folosind PHP pe partea de server. Ca întotdeauna, dacă cineva are nevoie de ajutor sau mă poți găsi pe Twitter, @noahhendrix.

  • Urmăriți-ne pe Twitter sau abonați-vă la feed-ul RSS NETTUTS pentru mai multe tutoriale și articole zilnice de dezvoltare web.


Cod