<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之旅 廣告
                # 簽名校驗規則 **短說OSX**與開發者之間進行接口交互請求,都會包含簽名參數,鏈接中簽名參數的生成,都是通過MD5生成的簽名參數,以確保請求安全。 針對開發者提供的接口,開發者需要在相應的接口中進行MD5鑒權,確保請求來源可信。 ### 1.請求有效期校驗 請求有效期校驗原理如下: OSX向開發者接口發起請求都會以GET方式傳遞“endtimestamp”參數,該參數標識了請求的有效期。1970-01-01開始的時間戳,秒為單位。 PHP中校驗方式如下: ``` <pre class="calibre26"> ``` $endtimestamp=intval($_GET['endtimestamp']); if($endtimestamp&gt;time()){ $this-&gt;apiError('請求超時');//請求超時,不做處理 } ``` ``` ### 2.請求簽名校驗 將請求參數和appSecret封裝成Map集合(如接口文檔中無特殊說明,默認除sign外所有請求參數參與簽名),按照**參數名**(Key)進行升序排列,將排序后Map集合的參數值(value)拼裝成字符串進行MD5簽名。其中appSecret在簽名中的順序取決于他在所有參數名中的順序。 以用戶信息獲取接口為例: `appKey:testappkey , appSecret:testsecret` 參數列表:`{appKey=testappkey,endtimestamp=1405495206,user_token=213434313,sign=498f48a01afe94853fe8be954bb7bd67}` 簽名原串:`testappkeytestsecret1405495206213434313` 簽名后字符串:`498f48a01afe94853fe8be954bb7bd67` 簽名后字符串和sign做比較,相同則驗證通過,不同則驗證失敗。 PHP中校驗方式如下: ``` <pre class="calibre26"> ``` $default_appKey='testappkey'; $default_appSecret='testsecret'; $Map=[ 'appKey' =&gt; $_GET['appKey'], 'appSecret' =&gt; $default_appSecret, 'endtimestamp' =&gt; $_GET['endtimestamp'], 'user_token' =&gt; $_GET['user_token'] ]; $sign = $_GET['sign']; $endtimestamp=intval($Map['endtimestamp']); if($endtimestamp&gt;time()){ $this-&gt;apiError('請求超時');//請求超時,不做處理 } if($Map['appKey']!=$default_appKey){ $this-&gt;apiError('參數錯誤,秘鑰key不正確');//參數錯誤,秘鑰key不正確 } ksort($Map);//$Map按 鍵 升序排列 $before_md5_sign=implode('',$Map);//拼接$Map為字符串 $after_md5_sign=md5($before_md5_sign);//MD5加密 if($after_md5_sign!=$sign){ $this-&gt;apiError('簽名驗證不通過');//簽名驗證不通過 } //簽名通過后的后續業務邏輯代碼 $data=array(); …… …… $this-&gt;apiSuccess($data); ``` ``` #### 注意: \> 1.簽名驗證時,如接口參數列表中無特殊說明,必須遍歷request請求中的所有參數進行簽名驗證。 > 短說向開發者發起的請求,也會帶上簽名,開發者可在提供的api中進行簽名驗證,確保請求來源可信。 \> 2.示例中$this->apiError("errorInfo");方法是OSX封裝的方法,主要實現返回json數據:(開發者需自己處理,保證返回結構中,msg的值為fail,data的值為錯誤描述) ``` <pre class="calibre26"> ``` { ????"code":200, ????"msg":"error", ????"data":"errorInfo" } ``` ``` \> 3.示例中$this->apiSuccess($data);方法是OSX封裝的方法,主要實現返回json數據:(開發者需自己處理,保證返回結構中,msg的值為ok,data的值為要返回的json格式的數據信息) ``` <pre class="calibre26"> ``` { ????"code":200, ????"msg":"ok", ????"data":json_data//這里數組結構的$data在apiSuccess方法中會被處理成json格式 } ``` ``` ## 簽名生成工具 為方便開發同學理解簽名校驗規則,可以使用下面的短說OSX簽名工具頁面進行校驗簽名的正確性。地址如下:[簽名校驗工具](https://osxbe.demo.opensns.cn/commonapi/index/checkTokenSign)
                  <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>

                              哎呀哎呀视频在线观看