真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

微信公眾平臺(tái)怎么獲取access_token

這篇文章給大家分享的是有關(guān)微信公眾平臺(tái)怎么獲取access_token的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

十多年的黃州網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整黃州建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“黃州網(wǎng)站設(shè)計(jì)”,“黃州網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

前言:access_token是微信公眾平臺(tái)接口的重要參數(shù),很多接口都需要這個(gè)參數(shù)。

一、access_token說明

access_token是公眾號(hào)的全局唯一接口調(diào)用憑據(jù),公眾號(hào)調(diào)用各接口時(shí)都需使用access_token。開發(fā)者需要進(jìn)行妥善保存。access_token的存儲(chǔ)至少要保留512個(gè)字符空間。access_token的有效期目前為2個(gè)小時(shí),需定時(shí)刷新,重復(fù)獲取將導(dǎo)致上次獲取的access_token失效。

1:公眾平臺(tái)的API調(diào)用所需的access_token的使用

1、建議公眾號(hào)開發(fā)者使用中控服務(wù)器統(tǒng)一獲取和刷新Access_token,其他業(yè)務(wù)邏輯服務(wù)器所使用的access_token均來自于該中控服務(wù)器,不應(yīng)該各自去刷新,否則容易造成沖突,導(dǎo)致access_token覆蓋而影響業(yè)務(wù);
2、目前Access_token的有效期通過返回的expire_in來傳達(dá),目前是7200秒之內(nèi)的值。中控服務(wù)器需要根據(jù)這個(gè)有效時(shí)間提前去刷新新access_token。在刷新過程中,中控服務(wù)器對(duì)外輸出的依然是老access_token,此時(shí)公眾平臺(tái)后臺(tái)會(huì)保證在刷新短時(shí)間內(nèi),新老access_token都可用,這保證了第三方業(yè)務(wù)的平滑過渡;
3、Access_token的有效時(shí)間可能會(huì)在未來有調(diào)整,所以中控服務(wù)器不僅需要內(nèi)部定時(shí)主動(dòng)刷新,還需要提供被動(dòng)刷新access_token的接口,這樣便于業(yè)務(wù)服務(wù)器在API調(diào)用獲知access_token已超時(shí)的情況下,可以觸發(fā)access_token的刷新流程。

2:access_token的生成說明

公眾號(hào)可以使用AppID和AppSecret調(diào)用本接口來獲取access_token。AppID和AppSecret可在“微信公眾平臺(tái)-開發(fā)-基本配置”頁中獲得(需要已經(jīng)成為開發(fā)者,且?guī)ぬ?hào)沒有異常狀態(tài))。調(diào)用接口時(shí),請(qǐng)登錄“微信公眾平臺(tái)-開發(fā)-基本配置”提前將服務(wù)器IP地址添加到IP白名單中,點(diǎn)擊查看設(shè)置方法,否則將無法調(diào)用成功。

微信公眾平臺(tái)怎么獲取access_token

二、接口調(diào)用請(qǐng)求說明

1:接口調(diào)用

https請(qǐng)求方式: GET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

2:參數(shù)說明

參數(shù)是否必須說明
grant_type獲取access_token填寫client_credential
appid第三方用戶唯一憑證
secret第三方用戶唯一憑證密鑰,即appsecret

3:返回說明

正常情況下,微信會(huì)返回下述JSON數(shù)據(jù)包給公眾號(hào):

{"access_token":"ACCESS_TOKEN","expires_in":7200}

參數(shù)說明

參數(shù)說明
access_token獲取到的憑證
expires_in憑證有效時(shí)間,單位:秒

錯(cuò)誤時(shí)微信會(huì)返回錯(cuò)誤碼等信息,JSON數(shù)據(jù)包示例如下(該示例為AppID無效錯(cuò)誤):

{"errcode":40013,"errmsg":"invalid appid"}

4:返回碼說明

返回碼說明
-1系統(tǒng)繁忙,此時(shí)請(qǐng)開發(fā)者稍候再試
0請(qǐng)求成功
40001AppSecret錯(cuò)誤或者AppSecret不屬于這個(gè)公眾號(hào),請(qǐng)開發(fā)者確認(rèn)AppSecret的正確性
40002請(qǐng)確保grant_type字段值為client_credential
40164調(diào)用接口的IP地址不在白名單中,請(qǐng)?jiān)诮涌贗P白名單中進(jìn)行設(shè)置

三、java接口開發(fā)

1:返回接口封裝類Token

/**
 * 類名: Token.java
   * 描述: 憑證
   */ public class Token {   // 接口訪問憑證   private String accessToken;   // 憑證有效期,單位:秒   private int expiresIn;   public String getAccessToken() {     return accessToken;   }   public void setAccessToken(String accessToken) {     this.accessToken = accessToken;   }   public int getExpiresIn() {     return expiresIn;   }   public void setExpiresIn(int expiresIn) {     this.expiresIn = expiresIn;   } }

2:獲取接口訪問憑證

  /**
   * 獲取接口訪問憑證
   * @param appid 憑證
   * @param appsecret 密鑰
   * @return
   */
  public static Token getToken(String appid, String appsecret) {
    Token token = null;
    String requestUrl = WeixinConstants.TOKEN_URL.replace("APPID", appid).replace("APPSECRET", appsecret);
    // 發(fā)起GET請(qǐng)求獲取憑證
    JSONObject jsonObject = httpsRequest(requestUrl, "GET", null);

    if (null != jsonObject) {
      try {
        token = new Token();
        token.setAccessToken(jsonObject.getString("access_token"));
        token.setExpiresIn(jsonObject.getInt("expires_in"));
      } catch (JSONException e) {
        token = null;
        // 獲取token失敗
        log.error("獲取token失敗 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));
      }
    }
    return token;
  }

3:http請(qǐng)求工具類

  /**
   * 發(fā)送https請(qǐng)求
   * @param requestUrl 請(qǐng)求地址
   * @param requestMethod 請(qǐng)求方式(GET、POST)
   * @param outputStr 提交的數(shù)據(jù)
   * @return JSONObject(通過JSONObject.get(key)的方式獲取json對(duì)象的屬性值)
   */
  public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) {
    JSONObject jsonObject = null;
    try {
      // 創(chuàng)建SSLContext對(duì)象,并使用我們指定的信任管理器初始化
      TrustManager[] tm = { new MyX509TrustManager() };
      SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
      sslContext.init(null, tm, new java.security.SecureRandom());
      // 從上述SSLContext對(duì)象中得到SSLSocketFactory對(duì)象
      SSLSocketFactory ssf = sslContext.getSocketFactory();

      URL url = new URL(requestUrl);
      HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
      conn.setSSLSocketFactory(ssf);

      conn.setDoOutput(true);
      conn.setDoInput(true);
      conn.setUseCaches(false);
      // 設(shè)置請(qǐng)求方式(GET/POST)
      conn.setRequestMethod(requestMethod);

      // 當(dāng)outputStr不為null時(shí)向輸出流寫數(shù)據(jù)
      if (null != outputStr) {
        OutputStream outputStream = conn.getOutputStream();
        // 注意編碼格式
        outputStream.write(outputStr.getBytes("UTF-8"));
        outputStream.close();
      }

      // 從輸入流讀取返回內(nèi)容
      InputStream inputStream = conn.getInputStream();
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
      String str = null;
      StringBuffer buffer = new StringBuffer();
      while ((str = bufferedReader.readLine()) != null) {
        buffer.append(str);
      }

      // 釋放資源
      bufferedReader.close();
      inputStreamReader.close();
      inputStream.close();
      inputStream = null;
      conn.disconnect();
      jsonObject = JSONObject.fromObject(buffer.toString());
    } catch (ConnectException ce) {
      log.error("連接超時(shí):{}", ce);
    } catch (Exception e) {
      log.error("https請(qǐng)求異常:{}", e);
    }
    return jsonObject;
  }

4:信任管理器工具類

/**
 * 類名: MyX509TrustManager.java
   * 描述: 信任管理器
   */ public class MyX509TrustManager implements X509TrustManager {   // 檢查客戶端證書   public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {   }   // 檢查服務(wù)器端證書   public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {   }   // 返回受信任的X509證書數(shù)組   public X509Certificate[] getAcceptedIssuers() {     return null;   } }

感謝各位的閱讀!關(guān)于“微信公眾平臺(tái)怎么獲取access_token”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


本文名稱:微信公眾平臺(tái)怎么獲取access_token
URL地址:http://weahome.cn/article/gjdesd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部