微信公众号开发中的openid值并不是固定的

在做微信开发时,今天犯了一个错误,检查了半天才检查出来。微信在向第三方推送信息时会带上一个openid 这是发送信息者的唯一标识,看文档说是唯一标识 就以为这个id只与微信号有关,而今天才发现,openid=加密(微信号+公众号),所以,在不同的微信公众号中,openid是不同的。

文档原话:

用户向公众号发送消息时,公众号方收到的消息发送者是一个OpenID,是使用用户微信号加密后的结果,每个用户对每个公众号有一个唯一的OpenID。

微信公众号H5获取用户的openid通常涉及到微信的JS-SDK,这是一个JavaScript库,允许公众号开发者在网页上集成微信功能,包括用户授权登录。以下是基本步骤: 1. **引入微信JS-SDK**:首先,在你的HTML页面中引入微信的JSSDK文件,一般是在`<head>`部分添加以下链接: ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js" charset="utf-8"></script> ``` 2. **配置信息**:在窗口加载完成之后,通过`wx.config`函数设置AppID、timestamp、nonceStr、signature等参数。这通常在页面底部的`window.onload`或`$(document).ready`回调中完成。 ```javascript wx.config({ debug: false, // 开启调试模式,可以查看错误信息 appId: 'your_app_id', // 你的公众号AppID timestamp: 'time_from_server', // 时间戳 nonceStr: 'random_string', // 随机字符串 signature: 'signature_from_server', // 签名 jsApiList: ['checkJsApi'] // 需要使用的JSAPI列表,如需获取openid则需要包含getJsApi }); ``` 3. **调用接口**:调用`wx.checkJsApi`检查所需的JSAPI是否已经可用,然后使用`wx.getMenuInfo`或`wx.getUserInfo`来获取用户信息,其中`getUserInfo`可以返回openid。 ```javascript wx.ready(function () { wx.getUserInfo({ success: function (res) { var openid = res.userInfo.openid; // 使用openid做后续操作 }, fail: function (err) { // 处理获取失败的情况 } }); }); ``` 4. **处理权限弹窗**:如果用户尚未授权,会触发微信的授权弹窗,用户同意后才会获取到openid。 记住,上述代码示例中的`your_app_id`、`time_from_server`、`random_string`、`signature_from_server`都是需要从服务器端获取的真实且在生产环境中,`debug`应设为`false`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值