, programmering med yii2: authclient integration med twitter, google og andre net,,,,, 49,,,,,,,, 7,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en serie kaldet programmering med yii2. programmering med yii2: specialiserede valideringer programmering med yii2 anvender avanceret anvendelse skabelon,,, hvad du vil lave,,, konfiguration for hver klient er lidt anderledes.for oauth det er nødvendig for at få klient id og hemmelig nøgle fra den tjeneste, du skal bruge.for openid fungerer det ud af kassen i de fleste tilfælde.,, for resten, jeg følger dig gennem tilføjelse af twitter og google autentificering.,, at authclient i vores anvendelse, tilsættes authclient til komponist, først skal vi tilføje authclient bibliotek til komponist. json:, "minimum stabilitet". "stabil", "brug" ("på": "> = 5.4.0", "yiisoft /yii2": "*", "yiisoft /yii2 bootstrap": "*", "yiisoft /yii2 swiftmailer": "*", "dektrium /yii2 bruger": "0.8.2" "stichoza /google oversætter folkesundhedsprogrammet": "~ 2, 0", "yiidoc /yii2 redactor": "2.0.0", "yiisoft /yii2 authclient": "*"},,,, så vi er nødt til at ajourføre komponist:,, sudo komponist ajourføre kodeord: lastning komponist samlinger med pakningalder oplysninger ajourføring afhængighed (herunder kræver dev) - fjernelse af de aktiv - /jquery.inputmask (3.1.58) - at installere de aktiv - /jquery.inputmask (3.1.61) læsning fra cache skriftligt lås fil at skabe autoload filer, konfigureringen af authclient støtte, er vi nødt til at tilføje authclient konfiguration indstillinger til vores web - konfiguration fil i ud ¶ web ".. php,.,, tilføje array - elementer til alle de tredjeparters tjenesteydelser, som de ønsker at støtte (oplysninger om hver enkelt kan findes i authclient vejledning).nu bruger vi indikation af en art nøgler til twitter.,, <?php $params = kræver (__dir__. "/params. folkesundhedsprogrammet) $ud = ["id = >" grundlæggende "," basepath = > dirname (__dir__), 'bootstrap "= > ['log" sprog "= > en" //engelsk igen "komponenter" = > ["authclientcollection = > [" klasse "= > yii. authclient. samling", "klienter" = > ["google" = > ["klasse" = > yii. authclient. kunder. googleopenid "," twitter » = > ["klasse" = > yii. authclient ¶ klienter. twitter, consumerkey = > twitter_consumer_key "," consumersecret = > twitter_consumer_secret ",]]], google vil arbejde ud af kassen uden yderligere konfiguration, men på twitter, skal vi registrere en ansøgning, registrere vores twitter anvendelse, skabe en ny twitter anvendelse på twitter anvendelse instrumentbræt:,,,,, klik, skabe nye app.jeg fandt, at den callback url var unødvendig, men jeg brugte indikation af en art http: //mydomain. kom /brugeren /sikkerhed /).,,,,, her er en ny side i vores anvendelse:,,,,, her er, indstillinger, side:,,,,, her er nøglerne og adgang møntefterligninger, side.her er vi nødt til at kopiere, forbrugernes centrale (api - nøgle) og forbrugernes hemmelige (api - hemmelige):,,,,, vil vi gøre brug af dem i et øjeblik.,, beskyttelse af nøgler fra github, i beskytter dine nøgler fra github, jeg beskrev i detaljer, hvordan jeg bruger en konfiguration fil opbevarer alle mine nøgler, bortset fra min github register.så, jeg er her i begyndelsen af mit yii konfiguration filer. det holder mig fra at tjekker mine nøgler til mit register, og at ødelægge min konti. , også i indledningen til mailtrap: en falsk smtp - præ - produktion afprøvning af anvendelse e - mail, begyndte jeg at integrere mailtrap sædvane smtp indstillinger i min yii swiftmailer konfiguration for afprøvning.dette vil sikre, at vi får den registrering, e - mails, da vi meldte os til vores lokale udvikling platform.,,,,, vi begge twitter anvendelse nøgler og mailtrap smtp - nøgler i /var /sikre /hello.ini uden register:,, oauth_twitter_key = "xxxxxxxxxxxxxxxxxx" oauth_twitter_secret = "xxxxx yyyyzzzzzzz222222x1111xx" smtp_host = "mysmtp. kom" smtp_username = "apple12345678" smtp_password = "yyyzz!!!! 32vd ", her er den kode, jeg ud. web.php, som omfatter disse miljøer, og fastsætter den enkelte konfiguration variabler:,, <?php $ud = parse_ini_file (» /var /sikre /- ini, sande); $params = kræver (__dir__. "/params. folkesundhedsprogrammet) $ud = ["id = >" grundlæggende "," basepath = > dirname (__dir__), 'bootstrap "= > ['log" sprog "= > en" //engelsk igen "komponenter" = > ["authclientcollection = > [" klasse "= > yii. authclient. samling", "klienter" = > ["google" = > ["klasse" = > yii. authclient. kunder. googleopenid "," twitter » = > ["klasse" = > yii. authclient ¶ klienter. twitter, consumerkey = > $ud ['oauth_twitter_key'], consumersecret = > $ud ['oauth_twitter_secret ']]]], nedenfor, her er hvad vi skal finde smtp - indstillinger til swiftmailer:,,'mailer = > ["klasse" = > yii. swiftmailer. mailer, viewpath = > @ app /mailer. "usefiletransport = > falske" transport "= > [" klasse "= > swift_smtptransport", "værts" = > $ud ['smtp_host "," brugernavn = > $ud ['smtp_username "," kodeord "= > $['smtp_password ud" "portvin" = > "25", "kryptering" = > tl,], ajourføring af databasen skema til opbevaring af sessionsnøgler, fordi vi bruger yii2 bruger, er det allerede nævntedøde en symbolsk tabel til opbevaring af de authclient nøgler.,, anvendelse yii (db) skema; anvendelse dektrium. bruger. migration. migration /* * * @ forfatter dmitry erofeev < dmeroff @ gmail. kom > * /klasse m140504_130429_create_token_table omfatter migration (offentlig funktion up() {$- > createtable ("{{% p.m.)" ["user_id = > skema: type_integer."ikke for "," code = > skema: type_string. "(32), der ikke er ugyldig, created_at = > skema: type_integer. "ikke for "," type "= > skema: type_smallint."NOT NULL' ], $this->tableOptions); $this->createIndex('token_unique', '{{%token}}', ['user_id', 'code', 'type'], true); $this->addForeignKey('fk_user_token', '{{%token}}', 'user_id', '{{%user}}', 'id', 'CASCADE', 'RESTRICT'); } public function down() { $this->dropTable('{{%token}}'); } },,We'll examine the contents of this table at the end of this tutorial, after we've registered via Twitter.,,Add the AuthClient Widget to the User Interface,,The Yii2-User login page displays its Connect widget for AuthClient services on the sign-in page—notice the Google and Twitter icons at the bottom of the page:,,,,,For some reason, however, they are not included on the registration - spor op side.det ligner et tilsyn med mig, med henblik på at ændre de tegn på side, har vi brug for tilsidesætte registrering synspunkt.heldigvis yii og yii2 bruger gøre det let se også overordnede synspunkter i yii2 ‑ bruger.,, at vende tilbage til, og ud ¶ web. folkesundhedsprogrammet, er, tilføjer vi den opfattelse, del nedenfor:,, <?php $ud = parse_ini_file (» /var /sikre /- ini, sande); $params = kræver (__dir__. "/params. folkesundhedsprogrammet) $ud = ["id = >" grundlæggende "," basepath = > dirname (__dir__), 'bootstrap "= > ['log" sprog "= > en" //engelsk igen "komponenter" = > ["lyset" = > ["tema" = > ["pathmap = > [' @ dektrium /user /synspunkter" = > @ app /synspunkter /user ']]], authclientcollection = > [, så vi sætter vores egne ændrede udgave af yii2 brugerens register.php i , @ app /synspunkter /user /registrering /register. folkesundhedsprogrammet.når registreringen side anmodes om, yii læsser vores version, som omfatter forbinde widget:,, <?php /* * denne sag er en del af dektrium projekt.* * (c) dektrium projekt < http: //////////////github. kom /dektrium > * * den fuldstændige ophavsrettigheder og - oplysninger på license.md * - sagen, som blev fordelt med denne kildekode.* /anvendelse yii. hjælpere. html; anvendelse yii. widgets. activeform; anvendelse dektrium. bruger ¶ widgets. forbinde; /* * * @ var yii), web. betragtning $denne * @ var yii. widgets. activeform $form * @ var dektrium. bruger. modeller. bruger $$denne bruger * /- > afsnit = yii:: t ('user "," tegn "); $- > params ['breadcrumbs'] [...] = $- > afsnit?> < div klasse = "ror" > < div klasse = "col-md-4 col-md-offset-4" > < div klasse = "panel panel default" > < div klasse = "panel under overskriften" > < h3 klasse = "panel titel" > <?= html: koder ($- > afsnit).> < /h3 > < /div > < div klasse = "panel" > <?php $form = activeform: begynder (["id = > registreringsformularen,]).> <?= forbinde: widget (["baseauthurl = > ['/user /sikkerhed /) «]]).> <?= $form - > område ($model "brugernavn)?> <?= $form - > område ($model, e - mail)?> <?folkesundhedsprogrammet (yii: $app - > getmodule ('user ') - > enablegeneratingpassword = = falske):?> <?= $form - > område ($model "kodeord") - > passwordinput()?> <?folkesundhedsprogrammet aspektet endif?> <?= html: submitbutton (yii:: t ('user "," tegn ") ['class = > btn btn succes btn block ']).> <?folkesundhedsprogrammet aspektet activeform: end();?> < /div > < /div > < p - klassen = "tekst center" > <?= html: en (yii:: t ('user, der allerede er registreret.tegn på! «)['/user /sikkerhed /login']).> < /p > < /div > < /div >,, her er vores skilt - side:,,,,, bruger erfaring med forbindelse via tjenesteydelser, her er hvad skiltet op proces ser ud.når du klik på twitter ikon ovenfor, vil det opfordre dem til at underskrive på twitter.,,,,, så vil bede dig om at tillade anvendelsen af din konto:,,,,,, så vil det tage dig at knytte, formular til registrering i vores anvendelse på denne side er også omhandlet i yii2,,,,,, når du bruger: klik, færdig, indføjes der din oauth tegn i den symbolske og registret omdirigerer hjem side fuldt ud bekræftet med vores anvendelse:,,,,, her er indeni den symbolske tabel, der oplagrer tjenesten sessionsnøgler for hver bruger:,,,,, på senere tegn i forsøg, twitter vil omdirigere dig uden yderligere tilladelse. det er, hvordan vi integrere tredjepartstjenester i yii2 grundlæggende anvendelse skabelon, yii2 bruger.jeg håber, du er tilfreds med, hvor let det er. du vil måske tjekke vores bygge din startende med folkesundhedsprogrammet serier, som vil bruge yii2 er avanceret model med tredjepart integration (bortset fra yii2 bruger).