亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序云開發 生成帶參小程序碼流程

發布時間:2020-08-22 09:49:59 來源:腳本之家 閱讀:221 作者:Stevin的技術博客 欄目:web開發

本文實例為大家分享了小程序生成帶參小程序碼的具體步驟,供大家參考,具體內容如下

生成帶參小程序碼流程

1、小程序端上傳生成二維碼所需的參數到云函數
2、云函數使用appidappsecret請求access_token
3、云函數使用access_token + 小程序端上傳的參數生成二維碼
4、云函數將生成的二維碼返回到小程序端(或者存到數據庫返回fileID,小程序端用fileID進行獲取,后續生成先在數據庫查找,數據庫沒有再執行生成操作,防止重復生成小程序碼文件)

小程序端上傳小程序碼所需的參數

wx.cloud.callFunction({
 name: 'getImage', // 云函數名稱
 data: { // 小程序碼所需的參數
 page: "pages/xxxx/xxxx",
 id: id,
 },
 complete: res => {
 console.log('callFunction test result: ', res)
 this.setData({ // 獲取返回的小程序碼
 xcxCodeImageData: res.result,
 })
 }
})

云函數用appidappsecret請求access_token

創建云函數getImage,并在對應云函數目錄中導入request 、request-promise、axios框架(用于數據請求),

npm install --save request // request框架
npm install --save request-promise // request框架promise風格
npm install --save axios // 數據請求框架,可將返回的數據類型設置為流`stream`
# 備注:install 可以簡寫為 i ;save 作用是將這個庫添加到package.json里面

云函數文件中導入框架

const cloud = require('wx-server-sdk')
const axios = require('axios')
var rp = require('request-promise');
const fs = require('fs');
var stream = require('stream');
# 不需要全部導入,根據實際下面實際使用情況酌情導入

請求獲取 access_token

// request框架promise風格
rp('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=secret=appSecret'
 .then(function(resultValue) {
 console.log("請求 success:")
 console.log(JSON.parse(resultValue))
 })
 .catch(function(err) {});
 });

// Nodejs原生寫法
const http = require("https") 
const url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=secret=appSecret" 
http.get(url,(res)=>{
 var resultValue = ""
 res.on("data",(data)=>{
 resultValue+=data
 })
 res.on("end",()=>{
 console.log(resultValue)
 })
 }).on("error",(e)=>{
 console.log(`獲取數據失敗: ${e.message}`)
})

獲取小程序碼

 var options = {
 method: 'POST',
 url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + access_token',
 body: {
 page: "pages/xxx/xxx
 scene: "id=xxx"
 },
 json: true
 };
 rp(options)
 .then(function(parsedBody) {
 console.log(parsedBody) //小程序碼圖片數據
 })
 .catch(function(err) {});

服務端完整代碼一

var rp = require('request-promise');
const fs = require('fs');
var stream = require('stream');

// 請求微信access_token
 rp('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=secret')
.then(function(resultValue) {
console.log("請求 success:" + resultValue)
console.log(JSON.parse(resultValue).access_token)

// 請求小程序碼
var http = require("http"),
data = {
 // 小程序碼參數
 "page": "pages/CardDetail/CardDetail",
 "width": 300,
 "scene": "id=W6MIjlJhFW5Pec-Y",
};
data = JSON.stringify(data);
var options = {
 method: "POST",
 host: "api.weixin.qq.com",
 path: "/wxa/getwxacodeunlimit?access_token=" + JSON.parse(resultValue).access_token,
 headers: {
  "Content-Type": "application/json",
  "Content-Length": data.length
 }
 };
 var req = http.request(options, function (res) {
 res.setEncoding("binary");
 var imgData = '';
 res.on('data', function (chunk) {
 imgData += chunk;
 });
 res.on("end", function () {
 
 // 將返回的圖片數據轉化成uploadFile方法fileContent參數所需的文件流形式,且本地輸出數據正常,可以試著用此方法執行uploadFile進行獲取小程序碼,作者采用了方法二
 var bufferStream = new stream.PassThrough();
 bufferStream.end(new Buffer(imgData));
 console.log('uploadFile方法fileContent參數所需的文件流----')
 console.log(bufferStream)
 
 // Sublime Text可以運行輸出到本地,且可以打開二維碼
 // 本地存放路徑
 var path = 'public/'+ Date.now() +'.png';
 fs.writeFile(path, imgData, "binary", function (err) {
  if (err) {
  console.log("down fail");
 }
 console.log("down success");
 });
 });
 });
 req.write(data);
 req.end();
 })
.catch(function(err) {});

服務端完整代碼二(可直接粘貼使用)

const cloud = require('wx-server-sdk')
const axios = require('axios')
var rp = require('request-promise');
cloud.init()

// 云函數入口函數
exports.main = async (event, context) => {
 console.log(event)
 try {
const resultValue = await rp('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=secret')
const token = JSON.parse(resultValue).access_token;
console.log('------ TOKEN:', token);

const response = await axios({
 method: 'post',
 url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit',
 responseType: 'stream',
 params: {
 access_token: token,
 },
 data: {
 page: event.page,
 width: 300,
 scene: "id=" + event.id,
 },
});

return await cloud.uploadFile({
 cloudPath: 'xcxcodeimages/' + Date.now() + '.png',
 fileContent: response.data,
});
 } catch (err) {
console.log('>>>>>> ERROR:', err)
 }
}

點擊查看:request框架相關文檔

點擊查看:request框架promise風格相關文檔

點擊查看:axios框架相關文檔

點擊查看:小程序云開發文檔

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

钟祥市| 建宁县| 平罗县| 宿松县| 公安县| 利辛县| 宝鸡市| 西峡县| 财经| 平顶山市| 库伦旗| 平乐县| 佛坪县| 新民市| 绩溪县| 商水县| 龙门县| 子长县| 开远市| 西充县| 龙陵县| 黄龙县| 甘泉县| 惠东县| 随州市| 湖南省| 木兰县| 六安市| 黎川县| 和田县| 象州县| 浙江省| 敦煌市| 盖州市| 盐池县| 蓬莱市| 车险| 荥经县| 政和县| 日喀则市| 延吉市|