成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

微信小程序碼生成及可能存在的坑

546669204 / 1427人閱讀

摘要:換句話說,同一用戶,對(duì)同一個(gè)微信開放平臺(tái)下的不同應(yīng)用,是相同的對(duì)于,微信程序碼在同一時(shí)間用來掉用小程序碼生成接口使用以及調(diào)用生成一個(gè)應(yīng)用只有一個(gè)秘鑰,只有一個(gè)有效,且有效期是分鐘。

小程序二維碼的生成有三個(gè)不同的接口,針對(duì)不同的場(chǎng)景需求
下文介紹的是第二種,也是用的最多的一種:適用于需要的碼數(shù)量極多,或僅臨時(shí)使用的業(yè)務(wù)場(chǎng)景
接口地址:https://api.weixin.qq.com/wxa...

注意:通過該接口生成的小程序碼,永久有效,數(shù)量暫無限制。用戶掃描該碼進(jìn)入小程序后,開發(fā)者需在對(duì)應(yīng)頁面獲取的碼中 scene 字段的值,再做處理邏輯。使用如下代碼可以獲取到二維碼中的 scene 字段的值。調(diào)試階段可以使用開發(fā)工具的條件編譯自定義參數(shù) scene=xxxx 進(jìn)行模擬,開發(fā)工具模擬時(shí)的 scene 的參數(shù)值需要進(jìn)行 urlencode

// 這是首頁的 js
Page({
onLoad: function(options) {
// options 中的 scene 需要使用 decodeURIComponent 才能獲取到生成二維碼時(shí)傳入的 scene
var scene = decodeURIComponent(options.scene)
}
})

如下內(nèi)容為調(diào)用微信小程序二維碼接口,生成小程序二維碼圖片的Java實(shí)現(xiàn)【構(gòu)造post請(qǐng)求,調(diào)用微信接口】

import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
//參數(shù)說明,QRCreateBean對(duì)象中傳入自個(gè)需要的值。最主要的包括微信的accessToken以及小程序碼要存儲(chǔ)的內(nèi)容
//要存儲(chǔ)的內(nèi)容放到了scene參數(shù)中,掃碼后小程序要跳轉(zhuǎn)的頁面路徑page參數(shù)對(duì)應(yīng)

public static String createPoster(QRCreateBean qrCreateBean) throws Exception {
    log.info("======生成微信小程序碼開始=====");
    String qrcodeName = "qr_" + qrCreateBean.getSerialNo();
    long nowTime = System.currentTimeMillis();
    //二維碼圖片
    URL getCodeUrl = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + qrCreateBean.getAccessToken());
    HttpURLConnection httpURLConnection = (HttpURLConnection) getCodeUrl.openConnection();
    httpURLConnection.setRequestMethod("POST");// 提交模式
    httpURLConnection.setDoOutput(true);
    httpURLConnection.setDoInput(true);
    PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());
    JSONObject paramJson = new JSONObject();
    //在上線之前測(cè)試的版本中,頁面不能跳轉(zhuǎn),跳轉(zhuǎn)頁面的參數(shù)名定義為path,可在模擬器上進(jìn)行測(cè)試
    //paramJson.accumulate("scene", qrCreateBean.getSerialNo()).accumulate("path", "pages/goods/goods");
    //上線后,跳轉(zhuǎn)頁面的參數(shù)需定義為page,否則會(huì)找不到跳轉(zhuǎn)頁面
    paramJson.accumulate("scene", qrCreateBean.getSerialNo()).accumulate("page", "pages/goods/goods");
    paramJson.put("auto_color", false);
    JSONObject lineColor = new JSONObject();
    lineColor.put("r", 0);
    lineColor.put("g", 0);
    lineColor.put("b", 0);
    paramJson.put("line_color", lineColor);
    printWriter.write(paramJson.toString());
    printWriter.flush();
    String contentType = httpURLConnection.getContentType();
    if (contentType.contains("json")) {
       log.info("調(diào)用微信小程序生成接口出錯(cuò),token失效");
        return "1";
    } else {
        BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());
        //小程序碼圖片寫出存儲(chǔ)的路徑
        File file = new File("srcmain
esourcesimage" + qrcodeName + ".png");
        OutputStream ost = new FileOutputStream(file);
        int len;
        byte[] arr = new byte[1024];
        while ((len = bis.read(arr)) != -1) {
            ost.write(arr, 0, len);
            ost.flush();
        }
        ost.close();
        log.info("========生成微信小程序碼結(jié)束===========");

}

注意:
對(duì)于accessToken有一個(gè)坑
openId:是表示用戶在你的當(dāng)前應(yīng)用中的唯一標(biāo)示,比如小程序,微信公眾號(hào)等,這些都算是一個(gè)應(yīng)用,如果你有多個(gè)應(yīng)用,同一個(gè)用戶的openId可能并不相同
unionid:借用微信官方文檔中的話來說,如果開發(fā)者擁有多個(gè)移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用、和公眾帳號(hào)(包括小程序),可通過 UnionID 來區(qū)分用戶的唯一性,因?yàn)橹灰峭粋€(gè)微信開放平臺(tái)帳號(hào)下的移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(hào)(包括小程序),用戶的 UnionID 是唯一的。換句話說,同一用戶,對(duì)同一個(gè)微信開放平臺(tái)下的不同應(yīng)用,unionid是相同的

對(duì)于accessToken,微信程序碼openId在同一時(shí)間用來掉用小程序碼生成接口【使用appid以及secret調(diào)用生成(一個(gè)應(yīng)用只有一個(gè)秘鑰secret)】,只有一個(gè)有效,且有效期是5分鐘。當(dāng)有其他操作再獲取accessToken時(shí),之前的token會(huì)失效。所以每次在生成小程序二維碼之前都要重新獲取一下token。
如果用失效的accessToken去調(diào)用小程序碼生成接口,返回內(nèi)容為json格式的一個(gè)錯(cuò)誤提示。若正常返回小程序碼圖片,返回內(nèi)容的type為image/jepg。如在上文的代碼中,需要對(duì)調(diào)用接口后返回的內(nèi)容進(jìn)行判斷!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75755.html

相關(guān)文章

  • 從零開始:信小程序新手入門寶典《一》

    摘要:為了方便大家了解并入門微信小程序,我將一些可能會(huì)需要的知識(shí),列在這里,讓大家方便的從零開始學(xué)習(xí)一微信小程序的特點(diǎn)張小龍張小龍全面闡述小程序,推薦通讀此文小程序是一種不需要下載安裝即可使用的應(yīng)用,它出現(xiàn)了觸手可及的夢(mèng)想,用戶掃一掃或者搜一下即 為了方便大家了解并入門微信小程序,我將一些可能會(huì)需要的知識(shí),列在這里,讓大家方便的從零開始學(xué)習(xí); 一:微信小程序的特點(diǎn) 張小龍:張小龍全面闡述小程...

    whataa 評(píng)論0 收藏0
  • 從零開始:信小程序新手入門寶典《一》

    摘要:為了方便大家了解并入門微信小程序,我將一些可能會(huì)需要的知識(shí),列在這里,讓大家方便的從零開始學(xué)習(xí)一微信小程序的特點(diǎn)張小龍張小龍全面闡述小程序,推薦通讀此文小程序是一種不需要下載安裝即可使用的應(yīng)用,它出現(xiàn)了觸手可及的夢(mèng)想,用戶掃一掃或者搜一下即 為了方便大家了解并入門微信小程序,我將一些可能會(huì)需要的知識(shí),列在這里,讓大家方便的從零開始學(xué)習(xí); 一:微信小程序的特點(diǎn) 張小龍:張小龍全面闡述小程...

    mdluo 評(píng)論0 收藏0
  • 從零開始:信小程序新手入門寶典《一》

    摘要:為了方便大家了解并入門微信小程序,我將一些可能會(huì)需要的知識(shí),列在這里,讓大家方便的從零開始學(xué)習(xí)一微信小程序的特點(diǎn)張小龍張小龍全面闡述小程序,推薦通讀此文小程序是一種不需要下載安裝即可使用的應(yīng)用,它出現(xiàn)了觸手可及的夢(mèng)想,用戶掃一掃或者搜一下即 為了方便大家了解并入門微信小程序,我將一些可能會(huì)需要的知識(shí),列在這里,讓大家方便的從零開始學(xué)習(xí); 一:微信小程序的特點(diǎn) 張小龍:張小龍全面闡述小程...

    LdhAndroid 評(píng)論0 收藏0
  • 吃貨福利get-今日美食food信小程序

    摘要:微信小程序仿今日美食初學(xué)微信小程序,嗯,還不錯(cuò)嘛,挺有趣的于是自己動(dòng)手?jǐn)]了一個(gè)。開發(fā)工具下載開發(fā)者工具微信小程序官網(wǎng),下載好后就可以進(jìn)行開發(fā)了喲。 wechat-todayFood 微信小程序仿今日美食food 初學(xué)微信小程序,嗯,還不錯(cuò)嘛,挺有趣的! 于是自己動(dòng)手?jǐn)]了一個(gè)?。你別說一看標(biāo)題就知道我是吃貨呀,我是不想這么快就被揭穿的,但是這個(gè)小程序就是這么有意思呀。好了我要進(jìn)入正題了,...

    loostudy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<