关于微信小程序生产环境体验版获取不到openId的问题

您所在的位置:网站首页 js获取返回值 关于微信小程序生产环境体验版获取不到openId的问题

关于微信小程序生产环境体验版获取不到openId的问题

2024-07-13 09:33:57| 来源: 网络整理| 查看: 265

我们知道openid是微信用户验证的重要标识,支付功能严重依赖这个东西,之前我们做微信支付的时候是通过在微信客户端直接调用官方接口,通过传code参数来调用,下面这样

getOpenId(){ //获取用户的openid let _this=this; wx.login({ success(res) { if (res.code) { // 发起网络请求 wx.request({ url: 'https://api.weixin.qq.com/sns/jscode2session', data: { appid:appId, //开发者appid secret:secret, //开发者AppSecret(小程序密钥) grant_type:"authorization_code", //默认authorization_code js_code: res.code //wx.login登录获取的code值 }, success(res) { _this.userinfo.openid=res.data.openid; _this.userinfo.session_key=res.data.session_key; } }) } else { console.log('登录失败!' + res.errMsg) } } }) }

这样做理论上也可以拿到openid,但是这里有一个神坑,就是在小程序开发者工具直接测试,使用真机调试,都没有任何问题,但是一旦上传代码,使用小程序的体验版测试的话,就拿不到openid,奇怪的是,如果在体验版开启调试模式,又可以拿到,这是一个非常脑残的问题,直接影响就是开发环境和生产环境在代码相同的情况下,体现的效果不一样,微信官方也没有任何合理解释,经过很长时间的查找资料,获取openid不能直接在微信客户端来获取,应该改用后端来获取openid然后再返回给前端。

所以应该用Django来获取openid

def getopenid(request): res = {} appId = request.GET.get('appId')#开发者appid secret = request.GET.get('secret')#开发者AppSecret(小程序密钥) grant_type = "authorization_code" #默认authorization_code js_code = request.GET.get('js_code')#wx.login登录获取的code值 data = {'appId':appId,'secret':secret,"grant_type":grant_type,"js_code":js_code} url = "https://api.weixin.qq.com/sns/jscode2session" jscode = requests.get(url,data) res = jscode.json() return JsonResponse(res,safe=False,json_dumps_params={'ensure_ascii':False})

而前端获取openid的方法改造成请求本地接口

getOpenId(){ //获取用户的openid let _this=this; wx.login({ success(res) { if (res.code) { // 发起网络请求,改造成请求本地接口获取openid,规避体验版获取不到的问题 wx.request({ url: 'http://localhost:8000/getopenid', data: { appid:appId, //开发者appid secret:secret, //开发者AppSecret(小程序密钥) grant_type:"authorization_code", //默认authorization_code js_code: res.code //wx.login登录获取的code值 }, success(res) { _this.userinfo.openid=res.data.openid; _this.userinfo.session_key=res.data.session_key; } }) } else { console.log('登录失败!' + res.errMsg) } } }) }

至此才解决了这个问题,这件事情说明一个问题,就是做任何事情都不能想当然,同时开发小程序的时候,真机测试没有问题并不代表没有问题,一定要到生产环境测一下,另外最后一个忠告,微信小程序获取openid一定要在server端获取再返回给前端,千万不要图省事在前端直接获取openid



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭