unicloud获取小程序二维码和使用

首先我的路由,使用的是uni-cloud-router

1.首先导入插件mp-cloud-openapi

从这里直接导入项目中 https://ext.dcloud.net.cn/plugin?id=1810

2.生成二维码 base64

这是我写的 service

const {
	Service
} = require('uni-cloud-router')
const openapi = require('mp-cloud-openapi')
let Duplex = require('stream').Duplex;
module.exports = class appletService extends Service {
	constructor(ctx) {
		super(ctx)
		this.appid = '****'  //小程序appid
		this.secret = '*****'  //小程序秘要

		this.openapiWeixin = openapi.initWeixin({
			appId: this.appid,
			secret: this.secret
		})
	}


	async getQrcode(page, scene = 'aa', width = 430) {

		
	
		const result = await this.openapiWeixin.wxacode.getUnlimited({
			page: page,
			scene: scene,
			width: width,
			accessToken: await this.getToken()  //获取小程序token
		})

		
		return result.buffer.toString('base64');


	}
	
	
	//获取小程序token  这个我是存在表里,你们自行储存
	async getToken(){
		let detail_token = await this.service.setting.get('applet_token')
		let token = ''
		if (!detail_token|| detail_token.endtime < Date.now()) {
			const {
				accessToken,
				expiresIn
			} = await this.openapiWeixin.auth.getAccessToken()
			
			
			await this.service.setting.set('applet_token', {
				accessToken,
				expiresIn,
				endtime: Date.now() + (expiresIn - 1000) * 1000
			})
			
			token = accessToken
		} else {
			token = detail_token.accessToken
		}
		
		return token
	}


}

3.控制器返回给前端二维码

const {
    Controller
} = require('uni-cloud-router')
module.exports = class evalController extends Controller {
    constructor(ctx) {
        super(ctx)
    }
	
	
	
	async qrcode() {
		const data = this.ctx.data
		
	
		let page =  decodeURIComponent(data.page)
		let scene = data.scene ? data.scene : 'aa'
		
		let res_qrcode = await this.service.applet.getQrcode(page, scene)
		
		this.ctx.set('content-type', 'image/png')

		this.ctx.isBase64Encoded = true 

		return res_qrcode

	}
	
	
	
}

4.前端的使用方法

<image src="你的unicloud获取二维码的url?page=要跳转的路径&sence=带的参数"> </image>

这是用云开发开发的小程序,可以参考一下

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值