公众号和小程序说明
为了识别用户,每个用户针对每个公众号或小程序等应用会产生一个安全的
冷知识:公众号包含服务号和订阅号。我们常开发的是服务号
同一个微信用户在小程序和公众号上的是不同的
机制说明
微信的机制说明:
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,是相同的。
简而言之,是用来说明多个应用下用户身份一致性的问题。相比较而言,由于在同一个应用下每个用户的是唯一的,因此也是也可以用来标记用户身份,但是仅限于在同一个应用中。对于不同的应用,每个用户的是不一样的,要想在不同应用间识别用户的唯一性只可以用。下面来举一个例子来说明,例如:
小耿开发者账号下有公众号A和小程序B,对于访问公众号A和小程序B的用户小龙有与(!=),在公众号A应用中是唯一的,可以说明小龙的身份;在小程序B中是唯一的,也可以说明小龙的身份。假如,我们现在要确定公众号A的用户小龙与小程序B的用户小龙是否为同一个用户小龙,我们根据能确定吗?很显然,不可以。此时用户的就可以解决这个问题,即是用来确定不同应用下用户的唯一性。
如何获取?
公众号获取
参考文档:(建议放到后端处理)
小程序获取
1、需要在微信小程序调用登录开放接口 wx.login() 获取用户登陆凭证code。
wx.login()接口说明:
2、向服务器发送请求,并将code一起发送过去。
3、接下来,在服务端调用auth.接口
接口说明:
4、接口返回
获取途径
公众号获取
可以直接通过 获取到该用户 (建议放到后端处理)
小程序获取
微信官方给出的途径:
绑定了开发者帐号的小程序,可以通过以下途径获取 。
1、如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.login + 获取到该用户 ,无须用户再次授权。(以前是调用接口 wx.,或通过获取:授权登录,从解密数据中获取 。2021年4月13日以后就不支持这种方法了。相关文档:)2、如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.login + 获取到该用户 ,无须用户再次授权。3、用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过接口获取该用户的 ,无需用户授权。注意:本接口仅在用户支付完成后的5分钟内有效,请开发者妥善处理。4、小程序端调用云函数时,如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号,可在云函数中通过 cloud. 获取 。5、小程序端调用云函数时,如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用,也可在云函数中通过 cloud. 获取 。
在项目中采取下列方法来获取第一种方法举例:
微信小程序中调用wx.login()获取到code,将code传给后端由后端直接调用接口: 自己的appid&=密钥&=${code}&=
获取和、
onLoad: function (options) {
this.wxLogin()
},
wxLogin () {
wx.login({
success: (res) => {
//用户的code
let userCode = rest.code
console.log('wx.login==>',res)
// 该流程放到后端处理===
// https://api.weixin.qq.com 不是合法域名,正式环境无法访问 =============
wx.request({
// 自行补上自己的 APPID 和 SECRET
url:`https://api.weixin.qq.com/sns/jscode2session?appid=自己的appid&secret=密钥&js_code=${userCode}&grant_type=authorization_code`,
success: res => {
// 获取到用户的 openid
console.log("用户的openid:" + res.data.openid);
console.log("用户的unionid:" + res.data.unionid);
console.log("用户的session_key:" + res.session_key);
}
});
}
})
}
tips:获取的话是需要微信开放平台绑定小程序的,不然是不可能获取到的
查找 APPID 和
微信公众平台->开发->开发管理->开发设置
auth.
比较简单,大家可以自行查看 link
参考文章:
:
: