身份认证客户端

这个扩展为Yii2框架添加了OpenID、OAuth和OAuth2 consumers。

准备

  1. 按照官方指南http://www.yiiframework.com/doc-2.0/guide-start-installation.html的描述,使用Composer包管理器创建一个新的应用。
  2. 使用如下命令安装扩展:
  1. composer require yiisoft/yii2-authclient

如何做…

  1. 打开你的Github应用页面https://github.com/settings/applications并添加自己的新应用:

身份认证客户端 - 图1

  1. 获取Client IDClient Secret

身份认证客户端 - 图2

  1. 配置你的web配置,并为authClientCollection组件设置相应的选项:
  1. 'components' => [
  2. // ...
  3. 'authClientCollection' => [
  4. 'class' => 'yii\authclient\Collection',
  5. 'clients' => [
  6. 'google' => [
  7. 'class' =>'yii\authclient\clients\GoogleOpenId'
  8. ],
  9. 'github' => [
  10. 'class' => 'yii\authclient\clients\GitHub',
  11. 'clientId' => '87f0784aae2ac48f78a',
  12. 'clientSecret' =>'fb5953a54dea4640f3a70d8abd96fbd25592ff18',
  13. ],
  14. // etc.
  15. ],
  16. ],
  17. ],
  1. 打开你的SiteController并添加auth独立动作和成功回调方法:
  1. use yii\authclient\ClientInterface;
  2. public function actions()
  3. {
  4. return [
  5. // ...
  6. 'auth' => [
  7. 'class' => 'yii\authclient\AuthAction',
  8. 'successCallback' => [$this, 'onAuthSuccess'],
  9. ],
  10. ];
  11. }
  12. public function onAuthSuccess(ClientInterface $client)
  13. {
  14. $attributes = $client->getUserAttributes();
  15. \yii\helpers\VarDumper::dump($attributes, 10, true);
  16. exit;
  17. }
  1. 打开views/site/login.php文件并插入AuthChoice小组件:
  1. <div class="site-login">
  2. <h1><?= Html::encode($this->title) ?></h1>
  3. <div class="panel panel-default">
  4. <div class="panel-body">
  5. <?= yii\authclient\widgets\AuthChoice::widget(['baseAuthUrl' => ['site/auth'], 'popupMode' => false,]) ?>
  6. </div>
  7. </div>
  8. <p>Please fill out the following fields to login:</p>
  9. ...
  10. </div>
  1. 你将会看到你配置的图标:

身份认证客户端 - 图3

  1. 为了使用Github provider进行验证:

身份认证客户端 - 图4

  1. 如果成功,你的回调将会展示验证的用户属性:
  1. [
  2. 'login' => 'Name'
  3. 'id' => 0000000
  4. 'avatar_url' =>'https://avatars.githubusercontent.com/u/0000000?v=3'
  5. 'gravatar_id' => ''
  6. 'url' => 'https://api.github.com/users/Name'
  7. 'html_url' => 'https://github.com/Name'
  8. //...
  9. 'name' => 'YourName'
  10. 'blog' =>site.com'
  11. 'email => mail@site.com'
  12. //...
  13. ]
  1. onAuthSuccess方法中创建你自己认证的代码,可参考例子https://github.com/yiisoft/yii2-authclient/blob/master/docs/guide/quick-start.md

工作原理…

这个扩展为你的应用提供了OpenID、OAuth和OAuth2认证客户端。

AuthChoice小组件在一个选择的服务网站上打开了一个身份认证页面,存储auth动作URL。身份认证以后,通过一个POST请求发送认证数据时,当前的服务将用户重定向回去。AuthAction收到这个请求,并调用相应的回调。

你可以使用任何存在的客户端或者创建自己的。

参考