1. <td id="wjkjs"><strong id="wjkjs"><sup id="wjkjs"></sup></strong></td>
      <li id="wjkjs"><em id="wjkjs"></em></li>

        <optgroup id="wjkjs"><strong id="wjkjs"></strong></optgroup><input id="wjkjs"><ruby id="wjkjs"></ruby></input>

      1. <input id="wjkjs"></input><input id="wjkjs"><li id="wjkjs"><address id="wjkjs"></address></li></input>

        1. ECOS百科全書|高級搜索|RSS訂閱|加入收藏|服務中心|聯系我們歡迎您光臨!

          ECStore對接微信報token錯誤的解決辦法

          來源:商鳴網絡科技 發布時間:2020-01-04 14:55 字體:【   點擊

          故障現象:微信后臺配置都正確,但是同步微信菜單時總是報出“token錯誤,請稍后重試”的提示。

          問題分析:如果兩邊配置都沒有問題,這個可能是由于token在kvstore中緩存值不對導致的,系統會優先使用緩存值。

          解決辦法:

          方法是強制刷新緩存值。

          將文件“ /app/weixin/lib/wechat.php”復制一份放到二次開發目錄中,修改其中的get_basic_accesstoken方法,大約在112行,如下:

              // 獲取微信基礎信息ACCESS_TOKEN
              public function get_basic_accesstoken($bind_id){
                  if( base_kvstore::instance('weixin')->fetch('basic_accesstoken_'.$bind_id, $access_token) !== false){
                      logger::info('kv獲取ACCESS_TOKEN'.$access_token);
                      return $access_token;
                  }else{
                      $bindinfo = app::get('weixin')->model('bind')->getRow('appid, appsecret, email',array('id'=>$bind_id));
                      if( $bindinfo['appid'] && $bindinfo['appsecret']){
                          $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$bindinfo['appid']}&secret={$bindinfo['appsecret']}";
                          $httpclient = kernel::single('base_httpclient');
                          $response = $httpclient->set_timeout(6)->get($url);
                          $result = json_decode($response, true);
          
                          if( $result['errcode']==0 ){
                              if( !base_kvstore::instance('weixin')->store('basic_accesstoken_'.$bind_id, $result['access_token'], $result['expires_in']) ){ // 微信ACCESS_TOKEN的有效期,單位為秒
                                  logger::info("KVSTORE寫入公眾賬號登錄郵箱為 {$bindinfo['email']} 的ACCESS_TOKEN錯誤");
                              }
                      logger::info('遠程獲取ACCESS_TOKEN'.$result['access_token']);
                              return $result['access_token'];
                          }else{
                              logger::info("獲取公眾賬號登錄郵箱為 {$bindinfo['email']} 的ACCESS_TOKEN錯誤,微信返回的錯誤碼為 {$result['errcode']}");
                              return false;
                          }
                      }else{
                          logger::info("沒有取到公眾賬號ID為 {$bind_id} 的 appid 或者 appsecret 的信息");
                          return false;
                      }
                  }
              }


          將其中的:

          if( base_kvstore::instance('weixin')->fetch('basic_accesstoken_'.$bind_id, $access_token) !== false)

          修改為:

          if( base_kvstore::instance('weixin')->fetch('basic_accesstoken_'.$bind_id, $access_token) !== false && 1==2)

          這樣做的目的是強制重新取得token并存入到kvstore中。

          接著去后臺更新微信菜單,更新成功一次后,把剛才修改了的代碼改回去。下次如果修改了公眾號配置,重新操作一次即可。 


          ------分隔線--------

          關鍵詞:token錯誤,ecstore,重試

          轉載請保留:http://www.cechidyw.com/html/jszx/ecstore/article-2861.html

          ------分隔線--------
          尚未注冊暢言帳號,請到后臺注冊
          国产精品 日韩 综合 图片_高清欧美AV亚洲AV_国产av在在线免费观看_日本特大黄色A片
          1. <td id="wjkjs"><strong id="wjkjs"><sup id="wjkjs"></sup></strong></td>
            <li id="wjkjs"><em id="wjkjs"></em></li>

              <optgroup id="wjkjs"><strong id="wjkjs"></strong></optgroup><input id="wjkjs"><ruby id="wjkjs"></ruby></input>

            1. <input id="wjkjs"></input><input id="wjkjs"><li id="wjkjs"><address id="wjkjs"></address></li></input>