Cum se programează cu Yii2 Autentificare Google

Ce veți crea

Dacă vă întrebați: "Ce este Yii?" verifică Introducere în Cadrul Yii, care analizează beneficiile Yii și include o prezentare generală a Yii 2.0.

În această programare cu seria Yii2, ghid direct cititorii în folosirea cadrului Yii2 pentru PHP. În acest tutorial, vă voi continua să vă ghidez prin integrarea AuthClient-ului încorporat, utilizând API-urile Conturilor Google și OAuth 2.0. 

Ar putea fi de ajutor pentru tine de a revizui programare Cu Yii2: Integrarea Înregistrare utilizator, care se plimba prin integrarea bibliotecii Yii2-utilizator pentru înregistrarea și autentificarea utilizatorului și programarea cu Yii2: Integrarea AuthClient Cu Twitter, Google și alte rețele, care explorează integrarea cu autentificare Twitter și suportul acum depreciat pentru OpenID-ul Google. Acest tutorial vă va arăta cum să treceți de la integrarea Google OpenID mai devreme în integrarea OAuth 2.0 cu API-ul Google Accounts.

Pentru aceste exemple, vom continua să ne bazăm pe cadrul pentru seria, baza de date salut. Utilizați legăturile GitHub din această pagină pentru a obține descărcarea pentru depozitul de coduri.

Înainte de a începe, amintiți-vă, încerc să particip la discuțiile de mai jos. Dacă aveți o întrebare sau o sugestie de subiect, vă rugăm să postați un comentariu de mai jos sau să mă contactați pe Twitter @reifman. De asemenea, puteți să-mi trimiteți un e-mail direct.

Dacă ați observat că a existat o întârziere în această serie, este pentru că sunt recent înapoi de la operația creierului. Vă mulțumim pentru răbdarea și sprijinul dvs. - este bine să scrieți din nou în mod regulat și aștept cu nerăbdare să continuăm acoperirea Yii2.

Actualizarea utilizatorului Yii2

De când am scris ultima dată despre aceste subiecte, utilizatorul Yii2 sa îmbunătățit foarte mult. Primul lucru pe care trebuie să-l facem este actualizarea bibliotecii. Puteți face acest lucru cu compozitorul la linia de comandă:

compozitorul cere "dektrium / yii2-user: 0.9. * @ dev" 

Aceasta va actualiza automat compozitorul.json:

"Minimă stabilitate": "stabil", "necesită":  "php": "> = 5.4.0", "yiisoft / yii2": "*", "yiisoft / yii2-bootstrap": "*", " yiisoft / yii2-swiftmailer ":" * "," dektrium / yii2-user ":" 0.9.*@dev "," stichoza / google-translate-php ":" ~ 2.0 "," yiidoc / yii2-editor " "2.0.0", "yiisoft / yii2-authclient": "*",,

Ulterior, executați cele mai noi migrări de baze de date pentru utilizatorul Yii2 - aceasta va aduce baza de date la zi cu cea mai recentă bibliotecă:

php yii migra / up -migrationPath = @ vendor / dektrium / yii2-user / migrații

Veți vedea probabil așa ceva:

$ Php Yii Migrate / up --migrationPath = @ furnizor / dektrium / yii2-utilizator / migrări Yii Migration Tool (bazat pe Yii v2.0.6) Un total de 4 noi migrații care urmează să fie aplicate: m141222_110026_update_ip_field m141222_135246_alter_username_length m150614_103145_update_social_account_table m150623_212711_fix_username_notnull Aplică migrațiilor de mai sus? (da) nu [da]: da *** aplicarea m141222_110026_update_ip_field> alter coloana registration_ip în tabelul % user la string (45) ... done (time: 0.009s) *** aplicat m141222_110026_update_ip_field ) *** aplicând m141222_135246_alter_username_length> modificați numele de utilizator al coloanei în tabelul % user la șir (255) ... făcut (timpul: 0.010s) *** aplicat m141222_135246_alter_username_length (timp: 0.012s) *** aplicând m150614_103145_update_social_account_table> codul (32) la tabela % social_account ... făcut (timpul: 0,008s)> adăuga coloana created_at integer la tabelul social_account % social_account ... făcut (timp: 0.008s)> adăugați string numele de utilizator pe coloană masă % social_account ... făcut (timp: 0.009s)> crea account_unique_code index unic % social_account (cod) ... făcut (timpul: 0.016s) *** aplicat m150614_103145_update_social_account_table (timpul: 0.059s) *** aplicarea m150623_212711_fix_username_notnull> al ter nume utilizator în tabel % user pentru șir (255) NOT NULL ... făcut (timpul: 0.009s) *** aplicat m150623_212711_fix_username_notnull (timpul: 0.011s).

De asemenea, trebuie să mutați definiția componentei pentru yii2-user la modulele din \ hello \ config \ web.php:

'moduri' => ['redactor' => 'yii \ redactor \ RedactorModule', 'class' => 'yii \ redactor \ RedactorModule', 'uploadDir' => 'webroot / uploads' / salut / uploads', 'user' => [ 'class' => 'dektrium \ user \ Module', 'enableUnconfirmedLogin' => TRUE, ' '=> 12, '= confirmWithin' => 21600,' cost Admins' > ['admin']],],

Înregistrați-vă Proiectul Google

Pentru ca utilizatorii de aplicații Yii2 să se înregistreze și să se conecteze la Conturile Google, va trebui să înregistrați un Proiect Google în Consola pentru dezvoltatori:

hai Creați un proiect numit yii2hello:

Veți fi duși la pagina de pornire a proiectului cu o varietate de opțiuni în meniul barei laterale din stânga:

Este important să solicitați acces la oricare dintre grupurile API cu Google pe care le folosim. Pentru utilizatorul Yii2, trebuie să activați API-urile Google+. Click pe API-uri și API-uri API și căutați Google+:

Apoi apasa Activați API-ul:

Veți vedea o listă cu API-uri activate care include acum API Google+:

Apoi, trebuie să adăugăm acreditări, astfel încât să putem autentifica cererile noastre API cu Google pentru activitățile acestui proiect. Clic scrisori de acreditare:

Să folosim Cod client OAuth 2.0 mai sus. Apoi vi se va cere să creați un Ecran de aprobare OAuth și completați informațiile despre cererea dvs. care vor fi prezentate utilizatorilor care încearcă să se înregistreze sau să se conecteze la cererea dvs.:

Pe scrisori de acreditare pagina, vom alege aplicatie web, și din moment ce testează la nivel local, vom furniza două setări pentru apelurile de confirmare a autentificării. Folosesc portul 8888 pentru dezvoltarea mea locală. Deci, a mea Autorizări originale JavaScript va fi http: // localhost: 8888 și utilizatorul Yii2 cere URI-uri de redirecționare autorizate cale http: // localhost: 8888 / hello / user / security / auth? authclient = google.

Veți primi chei API, de asemenea cunoscute sub numele de a client ID și client secret:

Voi examina unde să plasați cheile de mai jos.

Configurarea suportului AuthClient

În Protejarea cheilor de la GitHub, am descris în detaliu modul în care folosesc un fișier de configurare pentru a stoca toate cheile mele în afară de depozitul meu GitHub. Apoi, includ acest fișier la începutul fișierelor de configurare Yii. Acest lucru mă împiedică să verific în mod accidental cheile mele în depozitul meu și să-mi compromită conturile. 

In al meu /var/secure/hello.ini fișier, stochez toate cheile pentru aplicația mea - plasează și cheile API-ului Google și aici:

oauth_google_clientId = "41xxxxxxxxxxxxxeusercontent.com" oauth_google_clientSecret = "LmxxxxxxxxxxxxxxxxxxxxxxFJ4" oauth_twitter_key = "rxkxxxxxxxxxxxxxxxxxopjU" oauth_twitter_secret = "b7gU4twxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkLy0z2e" smtp_host = "mailtrap.io" smtp_username = "2xxxxxxxxxxxxxxxxx2" smtp_password = "2xxxxxxxxxxxxxxxxx5" mysql_host = "localhost" mysql_un = "xxxxxxxxxxxx" mysql_db = "salut" mysql_pwd = "xxxxxxxxxxxx"

Trebuie să adăugăm referințe la aceste chei în setările de configurare AuthClient din fișierul nostru de configurare web din \ Config \ web.php. Adăugați elemente de matrice pentru toate serviciile terță parte pe care doriți să le acceptați:

 'basic', 'basePath' => dirname (__ DIR__), 'bootstrap' => ['log'], 'language' => 'en' ['tema' => ['pathMap' => ['@ dektrium / user / views' => \ authclient \ Colectia“, '' => [ '' => [ 'clasa' => 'dektrium \ user \ clienților Google \', '' => $ config [ ''], '= clientSecret' clienții Google clientId oauth_google_clientId > $ config ['oauth_google_clientSecret'],], 'twitter' => ['class' => 'yii \ authclient \ clients \ Twitter', 'consumerKey' => $ config ['oauth_twitter_key'], 'consumerSecret' => $ config ['oauth_twitter_secret']],],],

De asemenea, în Introducere în MailTrap: Un server SMTP fals pentru testarea pre-producției aplicației de e-mail, am început să integrez setările SMTP personalizate ale MailTrap în configurația Yii SwiftMailer pentru scopuri de testare. Acest lucru ne va asigura că primim e-mailurile de înregistrare atunci când ne înscriem pe platforma noastră de dezvoltare locală.

Pentru acest tutorial, am constatat că a trebuit să actualizez informațiile despre port pentru SwiftMailer la 2525 in \ Config \ web.php:

'Mailer' => [ 'class' => 'Yii \ swiftmailer \ Mailer', 'viewPath' => '@ app / Mailer', 'useFileTransport' => false, 'transport' => [ 'class' => ' "Config ['smtp_host'], 'port' => '2525', 'config' , "criptare" => "tls",],],

Înregistrarea cu contul dvs. Google

Acum suntem gata să explorăm interfața frontală a utilizatorului Yii2. Să începem cu înregistrarea. Faceți clic pe Inscrie-te opțiune din meniu și veți vedea acest formular:

Pentru a vă înregistra cu tot ce am creat astăzi, faceți clic pe pictograma Google+. Pentru că sunt doar conectat (ă) la un cont Google, va apărea un popup și o redirecționare transparentă pentru a finaliza înregistrarea mea:

Ar trebui să vedeți pagina de pornire care arată că sunteți autentificat în colțul din dreapta sus:

Conectați-vă cu Contul dvs. Google

Clic Deconectare și apoi putem încerca să vă conectăm cu pictograma Google+. Clic Conectare în meniul antet:

Apoi faceți clic pe Pictograma Google+ din nou. Veți fi îndreptat direct către ecranul de pornire, indicând faptul că v-ați conectat din nou. Destul de cool, nu? Dar, dacă sunteți conectat (ă) la două conturi Google?

Când vă selectați contul Google pentru a vă conecta, veți reveni la pagina principală în modul autentificat.

Profilul utilizatorului și zona conexiunii

În timp ce nu este încă configurat în meniul antetului Bootstrap, dacă vizitați  http: // localhost: 8888 / Hello / user / settings / rețele, veți vedea noua interfață de conectare pentru conturile terțelor părți în cadrul utilizatorului Yii2:

După ce v-ați conectat, utilizatorii dvs. pot conecta și deconecta conturile sociale de aici. Există, de asemenea, o zonă de gestionare a contului și de profil de utilizator. E destul de bine făcut. 

S-ar putea să doriți să verificați starea mea Building Your Startup With PHP, care utilizează șablonul avansat al lui Yii2 cu integrarea terților, în prezent fără utilizatorul Yii2. Cu toate acestea, există acum un ghid pentru integrarea utilizatorului Yii2 cu șablonul avansat, așadar pot să îl actualizez în curând.

Ce urmeaza?

Urmăriți tutorialele viitoare din programul meu de programare cu seria Yii2, deoarece continuam să scufundăm în diferite aspecte ale cadrului. 

Salut cererile de teme și teme. Puteți să le postați în comentariile de mai jos sau puteți să ne trimiteți un e-mail pe site-ul meu Lookahead Consulting.

Dacă doriți să știți când vine următorul tutorial Yii2, urmați-mă @reifman pe Twitter sau verificați pagina de instructor. Pagina mea de instructor va include toate articolele din această serie de îndată ce vor fi publicate. 

  • Programarea cu Yii2: Integrarea înregistrării utilizatorilor (Tuts +)
  • Programarea cu Yii2: Integrarea AuthClient cu Twitter, Google și alte rețele (Tuts +)
  • Ghid pentru Extensia AuthClient pentru Yii 2
  • Yii2 Documentație bibliotecă OAuth2
  • Yii2 Developer Exchange, site-ul meu de resurse Yii2
Cod