**完成之後我們將解壓大www目錄,目錄結構如下圖,同時我們需要把oauth-php/library/store/mysql匯入到資料庫,通過同級目錄下的install.php匯入(install.php**需要做修改詳細**見下面php code)。
其中的myoauthserver自己所建立的資料夾,分別建立以下檔案:
每個檔案的**分別如下
平板檢視
列印01 //add_server.php
02 include_once'config.inc.php';
03 include_once'../library/oauthstore.php';
04
05 $store= oauthstore::instance('mysql',$dboptions);
06
07 // 當前使用者的id, 必須為整數
08 $user_id= 1;
09
10 // 伺服器描述資訊
11 $server=array(
12 'consumer_key'=>'eb4fddcdd368842837a55d9082e652b904f465adb',
13 'consumer_secret'=>'47415be2a343b74f978f3863faa66a56',
14 'server_uri'=>'',
15 'signature_methods'=>array('hmac-sha1','plaintext'),
16 'request_token_uri'=>'request_token.php',
17 'authorize_uri'=>'authorize.php',
18 'access_token_uri'=>'access_token.php'
19 );
20
21 // 將伺服器資訊儲存在 oauthstore 中
22 $consumer_key=$store->updateserver($server,$user_id);
平板檢視
列印?01
02 /*session_start();
03
04 if (empty($_session['authorized']))
05 */
10
11 include_once'config.inc.php';
12 include_once'../library/oauthstore.php';
13 include_once'../library/oauthserver.php';
14
15 //登陸使用者
16 $user_id= 1;
17
18 // 取得 oauth store 和 oauth server 物件
19 $store= oauthstore::instance('mysql',$dboptions);
20 $server=newoauthserver();
21
22 try
23
41 else
42
45 }
46 catch (oauthexception$e)
47
平板檢視
列印?1
2 // 資料庫連線資訊
3 $dboptions=array(
4 'server'=>'localhost',
5 'username'=>'root',
6 'password'=>'admin',
7 'database'=>'oauth'
8 );
平板檢視
列印?01
02
03 <?php 04 if(isset($_get['req']) && ($_get['req'] == 1))
22 else
43 ?>
平板檢視
列印?01 //oauth_register.php
02 // 當前登入使用者
03 $user_id= 1;
04
05 // 來自使用者表單
06 $consumer=array(
07 // 下面兩項必填
08 'requester_name'=>'fising',
09 'requester_email'=>'[email protected]',
10
11 // 以下均為可選
12 'callback_uri'=>'',
13 'application_uri'=>'',
14 'application_title'=>'online printer',
15 'application_descr'=>'online print your photoes',
16 'application_notes'=>'online printer',
17 'application_type'=>'website',
18 'application_commercial'=> 0
19 );
20
21 include_once'config.inc.php';
22 include_once'../library/oauthstore.php';
23
24 // 註冊消費方
25 $store= oauthstore::instance('mysql',$dboptions);
26 $key=$store->updateconsumer($consumer,$user_id);
27
28 // 獲取消費方資訊
29 $consumer=$store->getconsumer($key,$user_id);
30
31 // 消費方註冊後得到的 app key 和 app secret
32 $consumer_id=$consumer['id'];
33 $consumer_key=$consumer['consumer_key'];
34 $consumer_secret=$consumer['consumer_secret'];
35
36 // 輸出給消費方
37 echo'your app key: '.$consumer_key;
38 echo'
39 ';
40 echo'your app secret: '.$consumer_secret;
平板檢視
列印?01 //request_token.php
02 include_once'config.inc.php';
03 include_once'../library/oauthstore.php';
04 include_once'../library/oauthserver.php';
05
06 $store= oauthstore::instance('mysql',$dboptions);
07
08 $server=newoauthserver();
09 $server->requesttoken();
10 exit();
平板檢視
列印?01 /**
02 * installs all tables in the mysql.sql file, using the default mysql connection
03 */
04
05 /* change and uncomment this when you need to: */
06
07 /*
08 mysql_connect('localhost', 'root');
09 if (mysql_errno())
10
13 mysql_select_db('test');
14 */
15
16 $sql=file_get_contents(dirname(__file__) .'/mysql.sql');
17 $ps=explode('#--split--',$sql);
18
19 foreach($psas$p)
20
28 }
架構 SSO 與 OAuth2 0 的區別
是open authority 的縮寫,是令牌代替使用者密碼訪問應用的又一標準,前面一期介紹過 sso單點登入 springboot模擬單點登入 也是令牌登陸的一種方式。最典型的授權碼認證方式 和clientid 的校驗校驗通過後要對 token 訪問許可權做好限制 接受第三方應用的申請,維護 cl...
PHP架構 PHP核心
php核心 執行過程 啟用和執行php直譯器有幾個關鍵步驟 當乙個應用程式想啟動乙個php直譯器,首先呼叫php module startup。這個函式是直譯器的主開關。它啟用註冊過的sapi,初始化輸出快取系統,啟動zend引擎,讀入php.ini檔案,啟用配置,準備好處理第一次請求。核心模組使用...
手遊伺服器php架構比較
從swoole專案開始到現在,一直有人在問這個問題。今天來抽空講一下它。為什麼swoole非要使用純c來寫而不是php 來實現,核心的原因有2點 如sendfile eventfd timerfd pthread等等,這裡就不一一枚舉了,所以純php實現的 phpdaemon,reactphp,還有...