微信公众号开发获取openid
公众号开发获取openid
微信开放文档链接: 微信公众号获取openid官方文档
一、openid是什么?
微信用户访问微信内部的小程序/公众号产生的用户唯一标识。
请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
二、获取步骤
1.用户同意授权,获取code
在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有 scope 参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
用户同意授权后
如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。
code说明:
code作为换取access_token的票据,每次用户授权带上的 code 将不一样,code只能使用一次,5分钟未被使用自动过期。
2.根据code获取openid
获取 code 后,以GET方式请求以下链接获取openid以及access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回的参数如下
{"access_token":"ACCESS_TOKEN", // 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同"expires_in":7200, // access_token接口调用凭证超时时间,单位(秒)"refresh_token":"REFRESH_TOKEN", // 用户刷新access_token"openid":"OPENID", // 用户唯一标识"scope":"SCOPE" // 用户授权的作用域,使用逗号(,)分隔
}
注意:这里通过 code 换取的是一个特殊的网页授权access_token,与基础支持中的access_token(调用其他接口)不同。
获取openid
代码如下(示例):
/**
* 公众号获取openid的方法
* code: 微信网页授权获取到的code
*/
public Map<String, String> getOpenid(String code) {Map<String, String> map = new HashMap<>();map.put("openid", "");try {CloseableHttpClient httpclient = HttpClients.createDefault();ObjectMapper objectMapper = new ObjectMapper();String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + properties.getAppId() + "&secret=" + properties.getAppSecret() + "&code=" + code + "&grant_type=authorization_code";HttpGet get = new HttpGet(url);CloseableHttpResponse response = httpclient.execute(get);String result = EntityUtils.toString(response.getEntity(), "utf-8");JsonNode json = objectMapper.readTree(result);if (!json.has("errcode")) {String openid = json.get("openid").getTextValue();String accessToken = json.get("access_token").getTextValue();map.put("openid", openid);map.put("access_token", accessToken);//TODO 这里只获取这两个参数,需要获取其他返回参数自行添加return map;}} catch (Exception e) {log.info("获取openid异常");e.printStackTrace();}return map;}
总结
以上就是公众号获取openid的步骤,通过openid可以调取微信支付及发送公众号模板消息等等,是用户在公众号的唯一用户标识,笔者建议在获取到openid的同时就把它保存至用户表,以便于后续方便使用,并且openid几乎不会有变化。
微信公众号开发获取openid相关推荐
- 微信公众号开发获取openID以及用户详细信息,超详细步骤,亲测开发
好久没有发过博文了,恰好这两天做了一个关于微信公众号开发的东东,拿出来和大家分享一下. 需要做一套微信签到.抽奖系统,我要在后台存储微信用户的相关信息,openIDNickname之类的信息.在开发前 ...
- 微信公众号开发--获取当前用户位置,并把经度纬度转化成省市县
这里主要写的是获取当前用户的地理位置,调用微信接口,成功之后会返回经纬度,这里我们把它转化成了省市县方便调用 主逻辑函数 // 这个要在<head>里面引入 <script src= ...
- 微信公众号开发获取微信用户openid及访问url身份认证方式
技术要点: 1.如何获取业务系统中用户身份标识. OPENID是微信公众号中用户的唯一标识,通过OPENID与业务系统中USRID建立一对一的对应关系,这样获取到了OPENID也就能知道所对应的USR ...
- 微信公众号如何获取openid
如何获取openid (微信公众号配置,略) 先获取code,在根据code就能获取 openid 1.登录的时候,前台页面直接跳转(一个微信的接口地址)页面 var APPID = "&q ...
- 5 微信公众号开发 获取 access_token
在使用微信公众号接口中,需要access_token.access_token是公众号的全局唯一凭证.可以理解为我们服务器的身份证. 总结以上说明,access_token需要做到以下两点: 1.因为 ...
- 微信公众号开发:获取access_tokentoken失败,40164错误
微信公众号报错: "errcode":40164,"errmsg":"invalid ip xx.xx.xx.xx, not in whitelist ...
- H5(uniapp)联合tp6 开发微信公众号(获取openid)
1. 公众号申请好后,配置公众号基本信息,主要是appid,AppSecret, 还有ip白名单 2. 配置授权域名,不然调用接口获取openid会提示redirect_uri域名与配置不一致 1) ...
- 微信公众号开发--获取用户信息中文乱码的解决方案
在微信开发中我们会经常需要获取用户的信息. 微信给我们提供了获取用户信息的api, 地址为 https://api.weixin.qq.com/cgi-bin/user/info?access_tok ...
- 微信公众号开发获取access_token 错误error:40164
服务的IP没有添加白名单 需要有开发权限 管理员权限 开发>基本配置>白名单>查看 IP白名单 多个IP用回车分隔
- 微信公众号开发——获取AccessToken接口调用凭据
最新文章
- Java基础学习总结(17)——线程
- Cardinality 对执行计划的重要性
- 缩略图信息提取工具vinetto
- 元宇宙教不会区块链赚钱
- 计算机硬件Word,[计算机硬件及网络]word的操作.doc
- C++ pthread
- 深度学总结:weight_initialization
- 树莓派dht11上云_树莓派使用 DHT11 / DHT22 温湿度传感器
- IDEA下SVN基本使用
- c语言字符密码验证码,c语言下的学生管理系统(含密码加密和验证码).docx
- [Unity][FlowCanvas] 被重复执行的节点,只要其中一次执行出现报错,该报错就会在脚本中一直显示
- 电脑安装python3.74_在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
- 来教你用什么泡脚好,泡脚的好处有那些?
- win10计算器_好用的Win10系统计算器,终于可以在移动端设备上面来用了
- 索尼MUC-M2BT1换电池+爆改
- MMQ 开源免费 同时支持分布式架构和数据持久化、规则引擎、ACL的MQTT broker。
- vivox27微信无法连接服务器,vivo X27微信拍照模糊怎么办?简单一个操作轻松解决...
- Zookeeper-3.4.5安装步骤及异常处理
- 很久没来,丢一份前阵子做的 10 万连接性能测试 (fibjs, golang, nginx, nodejs)
- Python基础----Socket编程规范及底层原理(三)---socketserver实现并发及底层原理