<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # FunAdmin API 接口文檔 - 特別感謝 清靈之舞 QQ 349380886 ## 一、多應用API數據配置 - 表名: <表前綴>_oatuh2_client ![](https://img.kancloud.cn/44/3b/443be944d804afa64846ac97ed7b709c_1017x80.png) - 1、每個記錄對應一個api應用,關鍵字段appid、appsecret對應應用ID,應用密鑰,兩者用于后面簽名加密生成authentication使用。 - 2、目前api的設置暫未有入口,可自行在后臺編寫配置操作的界面。 ## 二 access-token 獲取 - 1、生成authentication前需要獲取access-token,獲取access-token方法在Token控制器父類fun\auth\Token中的accessToken方法 ![](https://img.kancloud.cn/26/e4/26e42f66bac2cef37093642c0df7b34c_729x505.png) 在api的路由配置中已經寫好了token獲取的路由,請無視原注釋,訪問路徑 xxx.com/api/v1/token ```php ////生成access_token,post訪問Token類下的token方法 Route::post(':version/token','api/:version.token/accessToken'); Route::post(':version/token/refresh','api/:version.token/refresh'); ``` - 2、access-token的獲取,對/api/v1/token進行post請求,需要提交的body為json對象,json參數如下: ``` ? ·username:用戶名 ? ·password:原始密碼 ? ·nonce:隨機字符串 ? ·timestamp:請求時間戳,與服務器收到請求的時間戳相差超過10秒視為無效時間戳,該時間在 vendor\funadmin\fun-addons\src\auth\Send.php中的$timeDif 定義,相關的過期時間都在這里定義了 ? ·appid:對應的appid,如FunAdmin ? ·appsecret:對應appid的appsecret如123456 ? ·sign:簽名 ``` **sign生成算法:對以上除sign外的所有屬性+ key=appsecret 按key首字母進行升序排序后,對新數組進行http_build_query轉url參數形式的字符串 后進行urldecode編碼,最后再轉md5小寫即生成sign簽名,PHP代碼如下** 即 ```` $params= [ "appid"=>"XXX" “appsecret”=>'xxxxxx' "key"=>"xxx" //等于appsecret "nonce"=>"隨機字符串" "timestamp"=>'時間戳' ] sign = strtolower(md5(urldecode(http_build_query($params)))); ```` 后臺代碼如下 ```` <?php /** * 生成簽名 * _字符開頭的變量不參與簽名 */ public static function makeSign ($data = [],$app_secret = '') { unset($data['version']); unset($data['sign']); return self::buildSign($data,$app_secret); } /** * 計算ORDER的MD5簽名 */ private static function buildSign($params = [] , $app_secret = '') { ksort($params); $params['key'] = $app_secret; return strtolower(md5(urldecode(http_build_query($params)))); } ``` - 3 .取請求成功后,將獲取的access-token和refresh_token,refresh_token用于刷新access-token,參數內包含用戶個人信息; **需要注意的是,在vendor\funadmin\fun-addons\src\auth\Token.php的accessToken中默認查詢member數據庫,如果需要自定義查詢用戶登陸,比如管理員表登陸或者其他表的匹配登陸,可以直接修改源碼或者在api的控制器Token.php中,重寫父類的getMember自定義查詢,推薦后者,前者容易在更新依賴被覆蓋‘’** ## 三、authentication的生成 - 1、在進行api請求時,需要先生成authentication用于api請求,authentication鑒權的關鍵字可以自定義,在api應用下的config文件夾內定義authentication即可 ```php <?php return [ 'authentication'=>"authenticationValue" ]; ``` ? 在進行api請求時,header部分提交authenticationValue的值為:uid 鑒權加密字符串,即可,注意中間是空格,uid為登陸用戶id。 - 2 、生成authentication 將獲取的access-token ,使用以下格式 `appid:access-token:uid` 進行base64 生成密文,組成:`uid 密文`,用戶api請求 ;注意中間有個空格,uid 登陸用戶的id 通過上面的操作 即可以使用接口獲取你想要的數據了, - 3、不需要鑒權的則在 控制器內 noAuth屬性 加入不需要鑒權的方法即可 //例如 ~~~ $noAuth = [‘user’] ~~~ ## 四、Api請求 對以上生成的鑒權密文,在頭部header設置authentication關鍵字的值為 `uid base64密文` 即可進行api請求,如沒有設置關鍵字,默認為authentication ![](https://img.kancloud.cn/c4/91/c49186dd292c98d9cbbe2812d3e45f17_996x153.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看