
从公众号菜单中打开H5链接是固定的,没有办法动态传递参数,但是,可以通过其他方式来实现这个需求。
首先从思路上来说,这里没有办法通过传递的方式把数据由公众号菜单传入H5页面,但是可以通过在H5页面中获取用户信息的方式实现。这里提供下实现这个需求的方法和思路,仅供参考。
主要思路就是通过自定义菜单配合网页授权接口获取用户信息。具体实现方法如下:
1首先需要在公众号菜单中定义菜单类型为view,然后到指定的链接地址。
2然后在该页面上使用微信的网页授权接口,即可获取用户信息。
这里有几个细节说明下。
微信网页授权接口scope分为snsapi_base和snsapi_userinfo,前者是获取用户openid,后者为获取用户基本信息的,如果用户已经关注公众号并通过自定义菜单进入该H5页面,则这两个类型的授权接口都是静默授权,即在用户无感知的情况下获取信息。其他情况获取用户基本信息是需要用户手动授权才可以。
在网页授权时使用到的access_token和调用微信其他接口的access_token是不一样的,网页授权使用的access_token是通过网页OAuth授权以后得到的。网页授权同样支持unionID机制,所以如果需要多个客户端关联用户信息的时候注意下使用unionID而不是openID。至此,这个需求的实现思路以及说完,具体的实现流程和注意事项,以及接口数据相关信息可以参见微信公众号开发文档之网页授权。
微信公众号获取用户信息有两种:snsapi_base和scope_userinfo
>
没有scope权限的意思是scope参数位置错误。
在使用微信时,出现过没有scope权限,这其实是因为手机微信软件中的部分文件丢失了,所以才导致不能正常使用。只需卸载微信后重新安装一次微信即可。有些软件中部分文件较为重要,如果不小心删除了,导致无法打开软件,可以试试下载后重新安装的方法。
错误原因是:订阅号没有相关的权限。账号没有认证,没有相关的权限。scope参数位置错误。使用的AppId和AppSecret在功能、高级功能、开发模式、开发者凭据中,可以找到。
scope权限
如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。以snsapi-base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页。
以snsapi-userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
接入微信授权,有两种方式:
静默授权和非静默授权
静默授权:scope=snsapi_base,没有d窗,只能获取OPENID
非静默授权: scope=snsapi_userinfo,有d窗需要手动确认授权,可以获取openid, 头像,昵称等信息。
H5登录就是通过授权获取code,将code传给后端,后端再将openid, 头像,昵称等信息返给前端。所以首先要获取到code。获取方式如下:
let appid = ''; //换成自己的appid
let uri = encodeURIComponent(link); //link是需要登录的页面
let authURL = `>
windowlocationhref = authURL;
页面自动刷新后,返回的地址里面会携带code值 ,把地址里的code值取出来传给后端就可以了。
在微信开发者文档通过网页授权获取用户基本信息,通过这个流程可以获取到用户的唯一openid。
获取用户信息有两种方式,根据传递过去的scope参数来决定:
以snsapi_base为scope发起的网页授权,是特殊场景下的静默授权,静默授权不需要用户进入同意授权页面,自动跳转到用户需要跳转的页面。简单方便步骤少,但是获取的信息较少
以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。会d出授权页面,需要用户点击授权。步骤多,但能取到用户个人信息
我在写投票页面的时候,因为只需要取到用户的openid就能判断用户是否关注,也能根据openid取到用户的个人信息,因此可以唯一判断投票人,有效防止刷票。
自己的微信openid查看方法如下:
一、通过微信接口
获取网页授权code(分为静默授权,非静默授权(需用户确认))
通过授权code获取用户信息(用户信息包含两种:1)只取OpenId,2)取用户相关头像、昵称。openId等)
二、通过公众号用户
首先登陆公众号
找到管理-->用户信息
找到已关注用户列表
用F12打开,打开调试模式,选中某个用户
找到label下的value值,这就是用户的openId
用户关注微信公众账号;
微信公众账号提供用户请求授权页面URL;
用户点击授权页面URL,将向服务器发起请求;
服务器询问用户是否同意授权给微信公众账号;
用户同意(scope为snsapi_base时无此步骤);
服务器将CODE通过回调传给微信公众账号;
微信公众账号获得CODE;
微信公众账号通过CODE向服务器请求Access Token;
服务器返回Access Token和OpenID给微信公众账号;
微信公众账号通过Access Token向服务器请求用户信息;
服务器将用户信息回送给微信公众账号。
以上就是关于微信公众号开发数据传递到h5如何实现全部的内容,包括:微信公众号开发数据传递到h5如何实现、避坑:微信公众号获取不到用户信息、微信没有scope是什么原因等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)