专业网站建设品牌,18年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> 微信公众号H5页面中获取openId
微信公众号H5页面中获取openId
来源:网络整理 时间:2023/2/14 0:38:43 共
3705
浏览
必要条件
已经认证的公众号(企业号可以,个人号是不能绑定H5的)
https认证域名,没有认证的域名微信中不能配置回调地址
微信公众平台认证通过,并创建app
步骤
获取code (需要配置选取scope=snsapi_base模式,code五分钟过期,使用过一次过期)
通过code就可以配置参数获取openId(注意这个openId和access_token是一起获取的)
没错,只需要两部就可以初步获取用户的唯一标识openId,下面介绍具体的配置
详细
1、 获取code
这个code只能在微信中发起请求,也就是说使用微信H5发起请求,原因下面介绍,这里先明确这个请求是从微信客户端中通过H5的链接请求的,只能在微信客户端中发起。
1.1参数说明
在这里插入图片描述
1.2拼接后的url
注意:url中的回调地址需要进行urlEcode处理,而且scope=snsapi_base模式不能改,改掉之后第二步只能获取到access_token。
https://open.weixin.qq.com/connect/oauth2/authorize?appid=公众号的应用标识&redirect_uri=回调地址&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
1
1.3如何发起url请求code
在我们H5相应界面中js的方法中使用window.location.href发起url请求,再次强调这个请求必须是从**微信的移动客户端(手机)**上发出!
window.location.href = "已经拼接的url"
1
1
1.4响应是什么?
redirect_uri/?code=CODE&state=STATE
1
回调地址+查询字符串(包含code和state),那么接下来的问题是,我们如何接收这个查询字符串中的code呢?目前我是用截取的方式
1.5截取code
从当前地址栏中截取出code
// 从地址栏的url中截取code
var url_str = location.href // 获取整个地址栏的url_str
var num = url_str.indexOf("?")
url_str = url_str.substr(num + 1) // 获取url中的参数
var arr = url_str.split("&") // 获取url参数数组
// 获取code
for(var i=0;i<arr.length;i++){
num = arr[i].indexOf('=')
if(arr[i].substring(0, num) == 'code'){
this.code = arr[i].substr(num+1)
}
}
到此code通过this.code存起来了,用于下一步获取openId使用。
1.6解释为什么必须微信发出
通过url我们不难发现,整个url中只有我们自己公众号app的相关id信息,关于用户的信息并没有拼接到url中,所以我们从浏览器中发起url请求时,微信服务器并不能区分哪一个微信用户发起获取code的请求。而通过微信客户端发起,微信就可以通过微信客户端中的一些默认字段区分用户,并返回用户的code信息。
2、获取openId
公众号获取网页授权access_token。获取code的url中的scope=snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
2.1参数说明
在这里插入图片描述
2.2拼接后的url
登录微信公众平台:开发 >> 基本配置 >> 开发者密码
https://api.weixin.qq.com/sns/oauth2/access_token?appid=替换为公众号的标识&secret=公众号的开发者密码&code=CODE&grant_type=authorization_code
1
现在有了url我们怎么发起请求呢?谁来发这个请求呢?
2.3如何发起请求,谁来发起请求
如何发起请求呢?前端H5不能发么?能!但是不用!原因:用户的access_token和openId我们不希望前端给我们后端发送,很难想象前端被破解之后发送过来千奇百怪的openId,后端又不具备校验能力,只能存储!所以最终我们使用的openId需要在后端服务器上获取,之后发送到前端做本地化存储!
在这里插入图片描述
后端怎么请求这里不重点做介绍,简单说只是写一个接口,对微信服务器发起请求,获取微信服务器的返回值,并对openId做存储,紧接着就要写返回参数,将openId返回给前端。
2.4H5怎么获取openId
H5想要从自己服务器中获取openId想必已经很简单,只需要使用axios向自己后端接口发起请求即可。
总结
至此我们总算是完成了H5获取openId,需要提醒的是这个openId只用作用户的唯一标识,并不能获取用户的头像、用户名等重要信息,如果想要获取重要的用户信息,还需要使用access_token继续请求微信服务器。而且需要注意的是从第一步开始的scope要设置为snsapi_userinfo,才会有后文 。具体的还要自己阅读微信官方文档。
参考文档:微信开发文档
版权说明:
本网站凡注明“广州松河 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
弹幕视频制作网站推荐下载
模型制作头像网站分享图片
伴奏制作头像网站分享视频
集团网站分享视频制作流程
故宫网站制作教程视频下载
画册制作头像网站分享图片
历史网站制作软件手机推荐
钢琴简历制作免费网站
在线制作海报网站设计平台
恐龙科普动画制作网站推荐
·上一条:
C# DataTable导出Excel
|
·下一条:
H5页面获取微信公众号的openid
同类资讯
example邮箱怎么登录_服务器
方舟生存进化多次进不去怎么办_服务器
光纤电缆接线方法_服务器
east是什么服务器_服务器
请问理性真正的迷你世界玩家反感迷你狗吗_服务器
华为光猫ma5671怎么设置_服务器
如何获得一个公网固定IP_服务器
怎么把IE浏览器代理成日本的IP地址_服务器
任天堂注册哪个区好_服务器
石家庄市到底阳了多少人_服务器
什么牌子的激光电视最好_服务器
刺激战场手机掉帧怎么办_服务器
手机短信在移动联通服务器里保存多久_服务器
王者荣耀920日超玩会对战ts_服务器
wow战网点数怎么获得_服务器
mac系统升级的方法_服务器
忍界大战在几集_服务器
储存里的游戏数据是什么_服务器
乐视电视adb调试怎么开启_服务器
忘记了联通WLAN业务登录密码_服务器
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2026 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com