前端通过js获取微信公众号用户的唯一标识符openId

摘要:
appid=xxxxxxxxxxxxx&redirect_ uri=http%3a%2f%2f127.0.0.1&response_ type=code&scope=snsapi_ userinfo#wechat_redirect其中appid是开发者帐户或微信平台的appid,redirect_uri是跳转的重定向地址,其他是默认参数。不要考虑。请注意,重定向地址只能使用端口80请求地址,然后它将被重定向到新地址。地址参数将包括代码参数,如下所示http://127.0.0.1/?url=index&code=xxxxxxxxxxxxxxxxxxxxxxxxxxxx&state=然后直接获取问号传递的参数代码。第二步:根据代码获取openId。请求地址为https://api.weixin.qq.com/sns/oauth2/access_token?

微信公众号程序开发的时候,获取用户信息的时候,需要用到用户的openId,openId是微信用户的唯一标识符,这个操作可以后台实现也可以前端实现,之前项目里是通过后台来获取的,好像用到了一些三方的包,然后我抽空看了一下微信开发文档,发现通过前端获取openId也很简单,如下所示:

一、先附上微信公众号开发文档https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.html

二、获取openId

第一步,先获取code,大致可以理解为每次点击微信公众号的不同菜单栏,都会产生不同的code,但是同一个用户不同的code,又对应着唯一的openId

通过自定义的路径,可以获取到code,注意code只能用一次,使用过就失效了,链接为

https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxxxxxxxxxx&redirect_uri=http%3a%2f%2f127.0.0.1&response_type=code&scope=snsapi_userinfo#wechat_redirect

其中appid为开发者账号或者微信平台的的appid,redirect_uri为跳转的重定向地址(地址包含特殊符号,需要转码才行),其他为默认参数,不用考虑,注意,重定向地址只能使用80端口

请求地址后会重定向到一个新的地址,地址的参数中会有code这个参数,如下所示

http://127.0.0.1/?url=index&code=xxxxxxxxxxxxxxxxxxxxxxxxxxxx&state=

然后直接获取问号传的参数code即可(vue可以使用this.$route.query.code获取)

第二步:根据code获取openId,请求地址为

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

其中appid和secret为开发者账号或者微信平台的的appid和appsecret,code为第一步获取到的code,最后一个参数为默认参数,不用考虑

如下所示

this.$axios.get(`https://api.weixin.qq.com/sns/oauth2/access_token?appid=xxxxxxxxxxxxxxxxxxxx&secret=xxxxxxxxxxxxxxx&code=xxxxxxxxx&grant_type=authorization_code`).then(res =>{
      console.log(res);
    });

然后就可以返回openid了

前端通过js获取微信公众号用户的唯一标识符openId第1张

注意:如果出现跨域问题,使用proxy代理即可

前端通过js获取微信公众号用户的唯一标识符openId第2张

如果返回值错误,对照开发指南的错误表,解决错误即可

嗯,就酱~~

免责声明:文章转载自《前端通过js获取微信公众号用户的唯一标识符openId》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sqlmap的简单爆破ARM寄存器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Alpha版本冲刺(八)

队名:404 Note Found 组长博客:https://www.cnblogs.com/heihuifei/p/10023246.html 作业博客:https://edu.cnblogs.com/campus/fzu/Grade2016SE/homework/2366 目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组...

前端导出功能实现的两种方式

1.点击链接 数据、文件格式全部在后台封装好,返回给前端一个链接,前端通过点击链接自动下载,两种方式: 1 (1)window.location.href = ‘url’ 2 (2)<a href='http://t.zoukankan.com/url' download=''></a> 2.解析后台返回的文件流 这种方式就是后台将...

js 递归获取子节点所有父节点,深度遍历获取第一个子树

前端需求。 递归 深度优先遍历算法 // 查找一个节点的所有父节点 familyTree (arr1, id) { var temp = [] var forFn = function (arr, id) { for (var i = 0; i < arr.length; i++) {...

WebRTC学习(五)WebRTC信令服务器

一:使用socket.io发送消息 (一)socket.io服务端发送消息 broadcast会向站点中的所有房间发送消息 (二)socket.io客户端处理消息 二:WebRTC信令服务器 (一)信令服务器(TCP)作用 1.媒体相关信息交换:发送SDP描述信息(是否支持音频、视频,已经对应的编解码信息),通过信令服务器进行中转(因为两个客户端...

JS点击子元素不触发父元素点击事件(js阻止冒泡)

js阻止冒泡 <html> <title></title> <head> <meta charset="utf-8"> <style type="text/css"> .divone{100px;height:100px;background:b...

C++-如何使用JSONCPP库来读写JSON文件(搭建环境)

以前我从来没有用过JSON这种文件格式,现在工作上和前端的程序员对接的地方越来越多的使用JSON了。 还好有以前小组长留下的JSONCPP项目代码,作为参考。 也是学了好长时间,才学会怎么使用JSONCPP,但也不是很熟悉。遇到需求,边做边学,一点点完善吧。 什么是JSON? 直接去看百度百科和别人博客是怎么介绍的吧,我就不写了。 https://baik...