
前几天和业务谈需求的时候提到了要在微信公众号里面做一个申请页面A。当时我对微信的了解还不是很多,只知道公众号上原来已经做了一个其他功能的页面B,B页面可以获取到客户微信的openid。
当时我们业务同事说只有B页面可以拿到openid,其他的页面都拿不到,所以这个正在谈的A页面入口要做在已有页面B上,然后通过B获取openid之后再传给A。我当时因为不懂也只能听他说,毕竟那个同事说的好像很确定的样子。
事后我仔细想了想,页面B也就是个普通的html呀,凭什么就B页面能获取客户的openid呢?肯定有方法的!于是我就上网搜了一下,最后成功获取了自己的openid,下面介绍下方法吧。
首先,你要有个微信公众号,并且要获得这个接口的权限
点修改之后,在功能设置的“网页授权域名”处添加可以获取微信openid的域名,也就是你自己公众号里面需要获取openid网页的域名。
做完上面这些之后,其实已经可以实现我们想要的效果了,这里因为我不是要做一个完整的功能,我只是想试验下html的页面怎么获取openid,所以过程比较简陋。
这里是微信官方的网页授权方法:
其实看起来微信的说明有那么一大段,但核心的内容也就那么一点点,总结下来就是:先拿到code,再用code去换取网页授权access_token。
因为重定向的url要urlEncode,所以这里我用另一个网站把我要访问的url转换了一下,网址如下:
在微信浏览器里面输入下面的url,appid、redirect_uri改成自己的,其他的都可以不用改。
静默授权:scope=snsapi_base
非静默授权:scope=snsapi_userinfo
一般在微信中是看不到url也没办法输入url的,所以这里我是用微信开发者工具调试的。
输入完静默授权的url后,url自动跳转成有code的,这个code只有5分钟有效期。
同样的,获取openid也就是在微信浏览器中执行一下下面这个url就可以了。appid,secret换成自己的,code用上面一步获取的,其他的都不用改。
运行完后的结果就显示在左边这个图里啦,你看,openid不就拿到了吗。
我没尝试非静默授权的,不过我想应该也差不多吧。这里也不是一套完整的方案告诉大家怎么把这个部署到前端和后端自动获取openid。我只是想分享一下我试验的经历。
网页上不能直接获取,只能通过Oauth 20接口来获取。
但是该接口是属于高级接口,得需要给腾讯交钱的,而且只有服务号能享用。
对于订阅号来说,只能通过接口来获取。说白了,你能拿到OpenID的Session,是你服务器和微信服务器之间的Session,不是和客户之间的Session。
你接到用户发来的信息后,可以在24小时内给用户回复信息,无论是图文信息还是文字信息,都可以加入链接。此时,你可以将OpenID构造到URL里发给用户。当用户点击后,你和客户之间的Session就可以获取到他的OpenID。
因为你和客户之间的OpenID是明文满天飞,这里面要注意这么几个安全性问题:
1、发图文块的时候,要发两条信息,单条是可以被转发的,两条的话,用户就无法转发,只能删除了。避免用户将自己的OpenID泄露。
2、用户点击图文块的那张页面进去后,要隐藏右上角的分享图标。
3、要判断浏览器的UserAgent是否来自于MicroMessage
4、如果目标页面需要分享,要构造一个Form表单,用POST的方式将OpenID传过去。
5、实际项目经验中,需要对传来的参数拼在一起,做一下SHA1签名认证。
6、服务器能用SSL,就尽量用SSL,证书也不贵,大概也就3000-5000左右,让公司出钱买。
有两种方法可以获取微信用户的OpenID:
回复短信,在链接的OpenID用户,然后用户通过链接点击短信的最后一页,所以做好用户体验是非常糟糕的,每个菜单就是这么干的。
用一个调用高级接口的服务号
回答不容易,希望能帮到您,满意请帮忙采纳一下,谢谢 !
你好;订阅号只能通过图文或文本消息打开网页,自己传用户的openid。
你可以使用QQ浏览器,它可以支持电脑上微信,为您提供更为高效的微信沟通体验,为上班族带来更便捷的沟通方式,提高工作效率。
它使用过滤新规则,有效的过滤广告,插件,防止恶意链接,更好的保护上网安全。谢谢望采纳。
以上就是关于H5页面静默授权获取微信openid全部的内容,包括:H5页面静默授权获取微信openid、微信公众平台,如何获取用户ID、如何获取微信用户openid等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)