在实现这个功能之前,我们得先了解两个概念,code, openid,Unionid。
code 是小程序登录 或者 h5授权登录 后,微信给的一个临时凭证,这个凭证有效期五分钟。开发者需要在开发者服务器后台调用 code2Session,使用 code 换取 openid、unionid、session_key 等信息。
openid 是微信给某个用户在某个应用下生产的一个id,同一个用户在同一个主题下的不同应用生产的openid不同。
unionid 是微信开放平台为同一个微信用户在同一个开放平台账号下的不同公众号或小程序提供的一个全局唯一的标识符。
比如,主体是A企业,A企业下面有应用小程序,H5, app,那么这个三个应用里面,同一个用户的openid不同,但是unionid相同。
回到主题,那么我们已知,同一个主体,比如 主体A,下面有一个小程序,一个h5,现在用户已经在小程序上登录了,然后访问内嵌h5,这个时候h5里面用户是没有登录的,那么怎么获取呢?
内嵌h5自动登录
在小程序的webview页面,src加上一个code,比如,https://www.h5.cn?code=324g3241934ujx8ufh3kfjhei
然后h5通过url拿到code,需要请一个后端接口,吧code传给后端
后端调用微信接口 GET https://api.weixin.qq.com/sns/jscode2session ,拿到openid,unionid,
通过unionid拿到用户信息,然后连同token一起返回给h5
这样h5就登录了。