yii2
Yii2 OAuth2 - 예 : 소비자 Facebook OAuth2
수색…
페이스 북 개발자에게 앱 만들기
[ https://developers.facebook.com/](https://developers.facebook.com/)로 이동하여 앱을 만듭니다.
Add product
클릭하고 Facebook Login
선택하십시오.
yii2-authclient 설치
이 확장 프로그램을 설치하기 전에 yii2-app를 설치해야합니다. 이 예제에서는 yii2-basic 템플릿을 사용합니다. 여기 에 설치 안내서.
운영
composer require --prefer-dist yiisoft/yii2-authclient
또는 추가
"yiisoft/yii2-authclient": "~2.1.0"
composer.json
의 require
섹션에 composer.json
.
config components
config authClientCollection
을 추가하십시오.
return [
'components' => [
'authClientCollection' => [
'class' => 'yii\authclient\Collection',
'clients' => [
'facebook' => [
'class' => 'yii\authclient\clients\Facebook',
'clientId' => 'facebook_client_id',
'clientSecret' => 'facebook_client_secret',
],
],
]
],
// ...
];
facebook_client_id
는 애플리케이션 ID이고 facebook_client_secret
는 앱 비밀번호입니다.
인증 조치 추가 및 콜백 설정
- 추가 버튼
Login as facebook account
보기에Login as facebook account
으로 로그인 :
보기 폴더에서 site/login.php
를 편집하고 페이지 내용에이 줄을 추가하십시오 login :
<?= yii\authclient\widgets\AuthChoice::widget([ 'baseAuthUrl' => ['site/auth'], 'popupMode' => false, ]) ?>
위에서 우리는 SiteController
에서 auth
액션이 OAuth2 플로우를 SiteController
하도록 설정할 것입니다.
이제 우리는 그것을 창조합니다.
class SiteController extends Controller
{
public function actions()
{
return [
'auth' => [
'class' => 'yii\authclient\AuthAction',
'successCallback' => [$this, 'onAuthSuccess'],
],
];
}
public function onAuthSuccess($client)
{
// do many stuff here, save user info to your app database
}
}
우리는 yii\authclient\AuthAction
을 사용하여 URL을 만들고 페이스 북 로그인 페이지로 리디렉션합니다.
기능 onAuthSuccess
는 사용자 정보를 얻고 앱에 로그인하는 데 사용됩니다.
Facebook 앱 설정에 redirect_url 추가
yii2-app에서 prettyUrl을 사용하도록 설정하면 redirect_uri가 다음과 같이됩니다.
http://<base_url>/web/site/auth
예쁜 URL을 사용 중지하십시오.
http://<base_url>/web/index.php?r=site%2Fauth
예:
onAuthSuccess 함수의 예제
/**
* @param $client ClientInterface
*/
public function onAuthSuccess($client)
{
//Get user info
/** @var array $attributes */
$attributes = $client->getUserAttributes();
$email = ArrayHelper::getValue($attributes, 'email'); //email info
$id = ArrayHelper::getValue($attributes, 'id'); // id facebook user
$name = ArrayHelper::getValue($attributes, 'name'); // name facebook account
//Login user
//For demo, I will login with admin/admin default account
$admin = User::findByUsername('admin');
Yii::$app->user->login($admin);
}