1. 程式人生 > >Oauth2.0 oauth2-server-php的使用Demo,怎麼連線redis/可實現thinkphp5/yii/Laravel中使用

Oauth2.0 oauth2-server-php的使用Demo,怎麼連線redis/可實現thinkphp5/yii/Laravel中使用

單點登入SSO

本片教程沒有華麗的說辭,只有實實在在的程式碼: https://github.com/liaoshengping/oauth2-php
如果你沒有接觸oauth2.0,先無腦用原生php的跑一邊,方便理解 Oauth2.0

開發準備: 下載之後先執行:composer update

1.資料庫匯入

2.在service.php 設定資料庫資訊

3.notice:在host 設定 oauth2.com 指向本地

獲取access_token http://oauth2.com/token.php

post引數:

client_id:testclient
client_secret:testpass
grant_type:client_credentials //授權模式

結果:

{
  "access_token": "8f27b59bb071b296fc58b1679c22f6c40411b9e7",
  "expires_in": 60,
  "token_type": "Bearer",
  "scope": "trut"
}

授權登入

1.先跳轉到一個授權頁面,並告訴授權伺服器,來授權的是誰,工作的是authorize.php;(這個過程就像qq授權)

http://oauth2.com/authorize.php?response_type=code&client_id=testtest&state=這個是你要帶的引數

點選授權
在這裡插入圖片描述


得到一個code

2.用這個code 去換 access_token http://oauth2.com/token.php

post引數:

client_id:testclient
client_secret:testpass
grant_type:authorization_code //授權模式
code:剛剛獲取的code

如果成功:

 { 
 "access_token": "e07ff1efcf82d8351d4ea55b79d9d64a77239231", 
 "expires_in": 3600, 
 "token_type": "Bearer",
  "scope": null, 
  "refresh_token": "e71c1b23f146f50cf1d3db721a64bf4efb845f2c"
  }

If you finish,Congratulations!!!!Welcome to the stars

在自己專案中使用(應該聰明的你,能夠舉一反三,在各種框架中使用)

composer require bshaffer/oauth2-server-php

如果用redis做儲存

composer require predis/predis:dev-master

在server.php 中新增 同時把pdo 連線的註釋掉

比如新增一個使用者的時候,同時也要更新redis 中的資料。這麼初始化一個clinetid 為testtest ,和pdo獲取的一樣

$predis = new \Predis\Client(['scheme' =>'tcp',' host' =>'localhost','port' =>6379]);
$storage = new OAuth2\Storage\Redis($predis);
$storage->setClientDetails('testtest', 'testpass', 'http://baidu.com/','client_credentials','trut');