Yii2로 OAuth 로그인
twitter나 fb로의 로그인을 구현하려고 하면 어느 Auth 클라이언트 사용하는지, 각각 다른 익스텐션 준비하거나 해서 번거로움 하거나 하는 것입니다만, 공식의 OAuth 익스텐션이 대단하다
우선 표준 클라이언트가 많
Yandex라든지 일본에 익숙하지 않은 이름입니다만, 무엇인가라고 하면 러시아의 최대수 검색 서비스라고 합니다. Yii가 구 공산권에서 인기이므로 수요 있겠지요 분명.
fb와 twitter와 github와 google이 있으면 더 이상 곤란하지 않을까라고 생각합니다만, 이것 이외의 사이트를 이용하는 경우도 독자적으로 클라이언트를 쓰면 대응할 수 있습니다.
클라이언트 설정도 매우 간단합니다. 그래서 쉽게 대응할 수 있을 것 같습니다. (이것은 또 다른 기사에서)
내장도 간단.
composer에서 authclient 추가
composer.json
"php": ">=5.4.0",
"yiisoft/yii2": "*",
"yiisoft/yii2-bootstrap": "*",
- "yiisoft/yii2-swiftmailer": "*"
+ "yiisoft/yii2-swiftmailer": "*",
+ "yiisoft/yii2-authclient": "*"
},
설정에 사용하는 OAuth 클라이언트 추가
config/web.php
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'components' => [
+ 'authClientCollection' => [
+ 'class' => 'yii\authclient\Collection',
+ 'clients' => [
+ 'google' => [
+ 'class' => 'yii\authclient\clients\GoogleOpenId'
+ ],
+ 'facebook' => [
+ 'class' => 'yii\authclient\clients\Facebook',
+ 'clientId' => '<<FaceBookAppClientId>>', // Facebookで作成したアプリのキー情報
+ 'clientSecret' => '<<FaceBookAppClientSecret>>',
+ ],
+ ],
+ ],
루트에 해당하는 컨트롤러에 콜백 추가
controllers/SiteController.php
'class' => 'yii\captcha\CaptchaAction',
'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
+ 'auth' => [
+ 'class' => 'yii\authclient\AuthAction',
+ 'successCallback' => [$this, 'successCallback'],
+ ],
];
}
+ public function successCallback($client)
+ {
+ $attributes = $client->getUserAttributes();
+ // ここでログイン処理。終わると勝手にリダイレクトする
+ }
+
view에 로그인 버튼 추가
views/site/login.php
<div class="site-login">
<h1><?= Html::encode($this->title) ?></h1>
+ <?= yii\authclient\widgets\AuthChoice::widget([
+ 'baseAuthUrl' => ['site/auth']
+ ]) ?>
+
<p>Please fill out the following fields to login:</p>
이것만으로 표준 클라이언트라면 버튼까지 마음대로 내준다
대단해! 혁명적인 작음이다!
다만 간단한 것은 여기까지. 여러 수단으로 로그인시키려고 유저를 연결하거나 하면 여러 가지 신경을 쓰는 점도 나오므로 각각 노력해 주세요!
Reference
이 문제에 관하여(Yii2로 OAuth 로그인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/crifff/items/cfbe54fbed39719a6cf8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)