Om du frågar, "Vad är Yii?" checka ut Introduktion till Yii Framework, som granskar fördelarna med Yii och innehåller en översikt över Yii 2.0.
I denna programmering med Yii2-serien guidar jag läsare som använder Yii2 Framework for PHP. I den här handledningen fortsätter jag att styra dig genom integrationen av den inbyggda AuthClient, med hjälp av Google Accounts API och OAuth 2.0.
Det kan vara till hjälp för dig att granska Programmering med Yii2: Integrerande användarregistrering, som går genom integrationen av Yii2-användarbiblioteket för användarregistrering och autentisering och Programmering med Yii2: AuthClient Integration With Twitter, Google och andra nätverk, som undersöker integration med Twitter-autentisering och det nu borttagna stödet för Googles OpenID. Denna handledning visar hur du flyttar från vår tidigare Google OpenID-integration till OAuth 2.0-integrationen med Google-kontot API.
För dessa exempel fortsätter vi med att bygga på ramen för serien, vår hej kodbas. Använd GitHub-länkarna på den här sidan för att hämta nedladdningen för kodregistret.
Innan vi börjar, kom ihåg, jag försöker delta i diskussionerna nedan. Om du har en fråga eller ett ämnesförslag, vänligen skriv en kommentar nedan eller kontakta mig på Twitter @ reifman. Du kan också maila mig direkt.
Om du märkte att det har varit en fördröjning i denna serie beror det på att jag nyligen är tillbaka från hjärnkirurgi. Tack för ditt tålamod och support-det är trevligt att skriva regelbundet igen och jag ser fram emot att fortsätta att täcka Yii2.
Sedan jag senast skrev om dessa ämnen har Yii2 User förbättrats mycket. Det första vi behöver göra är att uppdatera sitt bibliotek. Du kan göra det med kompositören på kommandoraden:
kompositören kräver "dektrium / yii2-användare: 0.9. * @ dev"
Detta uppdaterar automatiskt composer.json:
"minimumstabilitet": "stabilt", "kräver": "php": "> = 5.4.0", "yiisoft / yii2": "*", "yiisoft / yii2-bootstrap": "*" yiisoft / yii2-swiftmailer ":" * "," dektrium / yii2-användare ":" 0.9.*@dev "," stichoza / google-translate-php ":" ~ 2.0 "," yiidoc / yii2-redaktor " "2.0.0", "yiisoft / yii2-authclient": "*",,
Därefter kör de senaste databasmigrationerna för Yii2 User-detta kommer att ge din databas uppdaterad med det senaste biblioteket:
php yii migrera / upp -migrationPath = @ leverantör / dektrium / yii2-användare / migreringar
Du ser sannolikt något på följande sätt:
$ php yii migrera / upp -migrationPath = @ leverantör / dektrium / yii2-användare / migreringar Yii Migration Tool (baserat på Yii v2.0.6) Totalt 4 nya migreringar som ska tillämpas: m141222_110026_update_ip_field m141222_135246_alter_username_length m150614_103145_update_social_account_table m150623_212711_fix_username_notnull Använd ovanstående migreringar? (ja | nej) nej: ja *** tillämpning m141222_110026_update_ip_field> ändra kolumn registration_ip i tabell % user till sträng (45) ... gjort (tid: 0.009s) *** applied m141222_110026_update_ip_field (tid: 0.030s ) *** tillämpning m141222_135246_alter_username_length> ändra kolumn användarnamn i tabell % user till sträng (255) ... gjort (tid: 0.010s) *** tillämpas m141222_135246_alter_username_length (tid: 0.012s) *** ansöker m150614_103145_update_social_account_table> lägg till kolumn kodsträng (32) till tabell social_account ... gjort (tid: 0.008s)> lägg till kolumn skapad_at heltal till tabell % social_account ... gjort (tid: 0.009s)> % social_account ... gjort (tid: 0.008s)> lägg till kolumn användarnamnsträng till tabell % social_account ... gjort (tid: 0.009s)> skapa unikt index account_unique_code på social_account (kod) ... gjort (tid: 0,016s) *** tillämpas m150614_103145_update_social_account_table (tid: 0.059s) *** ansöker m150623_212711_fix_username_notnull> al ter kolumn användarnamn i tabell % user till sträng (255) Ej NULL ... klar (tid: 0.009s) *** tillämpas m150623_212711_fix_username_notnull (tid: 0.011s) Migrerad upp framgångsrikt.
Du måste också flytta komponentdefinitionen för yii2-användare till moduler i \ hello \ config \ web.php:
'Moduler' => ['redactor' => 'yii \ redaktor \ RedactorModule', 'class' => 'yii \ redactor \ RedactorModule', 'uploadDir' => '@ webroot / uploads', 'uploadUrl' => ' / hello / uploads ',' user '=> [' class '=>' dektrium \ användaren \ Modul ',' enableUnconfirmedLogin '=> TRUE,' confirmWithin '=> 21600,' kostnad '=> 12,' admins '= > ['admin']]],
För att dina Yii2 app-användare ska kunna registrera och logga in med sina Google-konton måste du registrera ett Google-projekt i utvecklarkonsolen:
låt oss Skapa ett projekt kallad yii2hello:
Du kommer att tas till projektets hemsida med en mängd olika alternativ i menyn till vänster på sidorna:
Det är viktigt att begära tillgång till vilka API-grupper med Google vi kanske använder. För Yii2-användare måste vi aktivera Google+ API. Klicka på API: er och auth> API och söka efter Google+:
Klicka sedan Aktivera API:
Du får se en lista över Aktiverade API: er som nu omfattar Google+ API:
Därefter måste vi lägga till uppgifter så att vi kan verifiera våra API-förfrågningar med Google för det här projektets aktiviteter. Klick Referenser:
Låt oss använda OAuth 2.0-klient-ID alternativ ovan. Då blir du ombedd att skapa en OAuth-samtycke och fyll i information om din ansökan som kommer att presenteras för användare som försöker registrera eller logga in med din ansökan:
På Referenser sida, vi väljer webbapplikation, och eftersom vi testar lokalt tillhandahåller vi två inställningar för autentiseringsåterkallelser. Jag använder port 8888 för min lokala utveckling. Så min Godkända JavaScript-ursprung kommer att vara http: // localhost: 8888 och Yii2 Användaren kräver Godkända omdirigera URI: er sökväg http: // localhost: 8888 / hej / användare / säkerhet / auth? authclient = google.
Du kommer att presenteras med API-nycklar, även känd som a Klient ID och klient hemlighet:
Jag ska granska var du ska placera dessa nycklar nedan.
För att skydda dina nycklar från GitHub beskrev jag i detalj hur jag använder en konfigurationsfil för att lagra alla mina nycklar förutom mitt GitHub-arkiv. Sedan tar jag med den här filen i början av min Yii-konfigurationsfiler. Detta hindrar mig från att oavsiktligt kolla in mina nycklar till mitt förråd och kompromissa med mina konton.
I min /var/secure/hello.ini
fil, lagrar jag alla nycklar för min ansökan - lägg in dina Google API-nycklar inuti här också:
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 = "hej" mysql_pwd = "xxxxxxxxxxxx"
Vi behöver lägga till referenser till dessa nycklar i AuthClient-konfigurationsinställningarna i vår webbkonfigurationsfil i \ Config \ web.php
. Lägg till array-element för alla tredjepartstjänster som du vill stödja:
'basic', 'basePath' => dirname (__ DIR__), 'bootstrap' => ['logg'], 'language' => 'en', // tillbaka till engelska 'components' => ['view' => ['theme' => ['pathMap' => ['@ dektrium / användare / views' => '@ app / visningar / användare'],], 'authClientCollection' => ['class' => 'yii \ authclient \ Samling ',' clients '=> [' google '=> [' class '=>' dektrium \ användare \ klienter \ Google ',' clientId '=> $ config [' oauth_google_clientId '],' clientSecret ' > $ config ['oauth_google_clientSecret'],], 'twitter' => ['class' => 'yii \ authclient \ klienter \ Twitter', 'consumerKey' => $ config ['oauth_twitter_key'], 'consumerSecret' => $ config ['oauth_twitter_secret'],],],],
I introduktion till MailTrap: En falsk SMTP-server för förproduktionstestning av ansökningsadress, började jag också integrera MailTraps anpassade SMTP-inställningar i min Yii SwiftMailer-konfiguration för teständamål. Detta kommer att se till att vi får registreringsemail när vi registrerar oss på vår lokala utvecklingsplattform.
För denna handledning fann jag att jag var tvungen att uppdatera portinformation för SwiftMailer till 2525 in \ Config \ web.php
:
'mailer' => ['class' => 'yii \ swiftmailer \ Mailer', 'viewPath' => '@ app / mailer', 'useFileTransport' => false, 'transport' => ['class' => ' Swift_SmtpTransport ',' host '=> $ config [' smtp_host '],' användarnamn '=> $ config [' smtp_username '],' lösenord '=> $ config [' smtp_password '],' port '=>' 2525 ' , 'kryptering' => 'tls',],],
Nu är vi äntligen redo att utforska med Yii2 User's front-end-gränssnitt. Låt oss börja med registrering. Klicka på Bli Medlem alternativet i menyn och du får se detta formulär:
För att registrera dig med allt vi har skapat idag klickar du på ikonen Google+. Eftersom jag bara är inloggad på ett Google-konto kommer det att finnas en transparent popup och omdirigering för att slutföra min registrering:
Du bör se hemsidan som visar att du är autentiserad i övre högra hörnet:
Klick Logga ut och sedan kan vi försöka logga in med Google+-ikonen. Klick Logga in i huvudmenyn:
Klicka sedan på Google+ ikon igen. Du kommer att tas rätt till startskärmen som visar att du är inloggad igen. Ganska coolt va? Men, om du är inloggad på två Google-konton?
När du väljer ditt Google-konto för att logga in med dig tas du tillbaka till startsidan i autentiserat läge.
Medan det ännu inte är konfigurerat i vår Bootstrap header meny, om du besöker http: // localhost: 8888 / Hälsningar / användare / inställningar / nätverk
, Du får se det nya anslutningsgränssnittet för tredjepartskonton inom Yii2 User:
När du är inloggad kan dina användare ansluta och koppla bort sina sociala konton härifrån. Det finns också ett kontohanterings- och användarprofilområde. Det är ganska snyggt gjort.
Du kanske vill kolla in min Building Your Startup With PHP-serie, som använder Yii2s avancerade mall med tredjepartsintegration, för närvarande utan Yii2 User. Det finns dock en vägledning för att integrera Yii2 User med den avancerade mallen, så jag kan uppdatera det här snart.
Titta på kommande handledningar i min programmering med Yii2-serien när jag fortsätter att dyka in i olika aspekter av ramen.
Jag välkomnar funktion och ämnesförfrågningar. Du kan skicka in dem i kommentarerna nedan eller maila mig på min Lookahead Consulting webbplats.
Om du vill veta när nästa Yii2 handledning kommer, följ mig @ reifman på Twitter eller kolla min instruktörssida. Min instruktörssida kommer att innehålla alla artiklar från denna serie så snart de publiceras.