微信开发 invalid openid

微信开发时候测试号运行正常,换到正式号就会报invalid openid的错误。

看了微信问答系统里的答案,说是json格式的问题,但是我这边不是这个原因。

后来突然想到了,应该是AppId和AppSecret没有更新的问题,用的还是测试号的AppId和AppSecret。

每个微信用户的openid对应不同的公众号是不一样的,换句话说就是AppId,AppSecret,openid要成套。

调用微信接口时候会要求传递Token,而这个Token是用AppId和AppSecrect取回来的。

因此,如果AppId和AppSecret和OpenID对应不上,就会出现 invalid openid 这个错误。

修改以后,一切正常了。

不知道是不是有人和我犯了同样的错误呢。

### 实现 UniApp 微信小程序获取 OpenID 为了在 UniApp 中实现微信小程序获取用户的 OpenID,可以遵循以下方法: #### 1. 登录接口调用 通过 `uni.login` 接口获得临时登录凭证(code),此操作用于后续换取 session_key 和 openid。 ```javascript uni.login({ provider: 'weixin', success: function (loginRes) { console.log('Login Code:', loginRes.code); // 使用 code 进行进一步处理 } }); ``` #### 2. 获取用户信息授权 当用户点击按钮触发事件时请求用户信息权限,并在此过程中传递 code 给服务器端验证身份并最终得到 openid[^3]。 ```html <template> <view> <!-- 用户同意授权后才能继续 --> <button open-type="getUserInfo" @getuserinfo="wxLogin">授权登录</button> </view> </template> <script> export default { methods: { wxLogin(e) { const userInfo = e.detail.userInfo; uni.login({ provider: 'weixin', success: function(loginRes){ // 将 code 发送到后台交换 openid uni.request({ url: 'https://yourserver.com/api/getOpenid', // 替换成实际地址 method:'POST', data:{ code: loginRes.code, encryptedData: userInfo.encryptedData, iv: userInfo.iv }, success(res){ let openid = res.data.openid; console.log(openid); } }); } }) } } } </script> ``` #### 3. 处理可能遇到的问题 如果遇到了 `invalid code` 的错误提示,则可能是由于 code 已经被使用过或者是网络延迟造成的。确保每次只发送一次有效的 code 到服务端进行校验,并且及时更新最新的 code 值[^1]。 另外,在应用启动阶段即 app.vue 文件中的 onLaunch 函数内完成必要的初始化工作可以帮助更早地捕获 openid 数据[^2]。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值