公众号开发获取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相关推荐

  1. 微信公众号开发获取openID以及用户详细信息,超详细步骤,亲测开发

    好久没有发过博文了,恰好这两天做了一个关于微信公众号开发的东东,拿出来和大家分享一下. 需要做一套微信签到.抽奖系统,我要在后台存储微信用户的相关信息,openIDNickname之类的信息.在开发前 ...

  2. 微信公众号开发--获取当前用户位置,并把经度纬度转化成省市县

    这里主要写的是获取当前用户的地理位置,调用微信接口,成功之后会返回经纬度,这里我们把它转化成了省市县方便调用 主逻辑函数 // 这个要在<head>里面引入 <script src= ...

  3. 微信公众号开发获取微信用户openid及访问url身份认证方式

    技术要点: 1.如何获取业务系统中用户身份标识. OPENID是微信公众号中用户的唯一标识,通过OPENID与业务系统中USRID建立一对一的对应关系,这样获取到了OPENID也就能知道所对应的USR ...

  4. 微信公众号如何获取openid

    如何获取openid (微信公众号配置,略) 先获取code,在根据code就能获取 openid 1.登录的时候,前台页面直接跳转(一个微信的接口地址)页面 var APPID = "&q ...

  5. 5 微信公众号开发 获取 access_token

    在使用微信公众号接口中,需要access_token.access_token是公众号的全局唯一凭证.可以理解为我们服务器的身份证. 总结以上说明,access_token需要做到以下两点: 1.因为 ...

  6. 微信公众号开发:获取access_tokentoken失败,40164错误

    微信公众号报错: "errcode":40164,"errmsg":"invalid ip xx.xx.xx.xx, not in whitelist ...

  7. H5(uniapp)联合tp6 开发微信公众号(获取openid)

    1. 公众号申请好后,配置公众号基本信息,主要是appid,AppSecret, 还有ip白名单  2. 配置授权域名,不然调用接口获取openid会提示redirect_uri域名与配置不一致 1) ...

  8. 微信公众号开发--获取用户信息中文乱码的解决方案

    在微信开发中我们会经常需要获取用户的信息. 微信给我们提供了获取用户信息的api, 地址为 https://api.weixin.qq.com/cgi-bin/user/info?access_tok ...

  9. 微信公众号开发获取access_token 错误error:40164

    服务的IP没有添加白名单 需要有开发权限 管理员权限 开发>基本配置>白名单>查看  IP白名单 多个IP用回车分隔

  10. 微信公众号开发——获取AccessToken接口调用凭据

最新文章

  1. Java基础学习总结(17)——线程
  2. Cardinality 对执行计划的重要性
  3. 缩略图信息提取工具vinetto
  4. 元宇宙教不会区块链赚钱
  5. 计算机硬件Word,[计算机硬件及网络]word的操作.doc
  6. C++ pthread
  7. 深度学总结:weight_initialization
  8. 树莓派dht11上云_树莓派使用 DHT11 / DHT22 温湿度传感器
  9. IDEA下SVN基本使用
  10. c语言字符密码验证码,c语言下的学生管理系统(含密码加密和验证码).docx
  11. [Unity][FlowCanvas] 被重复执行的节点,只要其中一次执行出现报错,该报错就会在脚本中一直显示
  12. 电脑安装python3.74_在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
  13. 来教你用什么泡脚好,泡脚的好处有那些?
  14. win10计算器_好用的Win10系统计算器,终于可以在移动端设备上面来用了
  15. 索尼MUC-M2BT1换电池+爆改
  16. MMQ 开源免费 同时支持分布式架构和数据持久化、规则引擎、ACL的MQTT broker。
  17. vivox27微信无法连接服务器,vivo X27微信拍照模糊怎么办?简单一个操作轻松解决...
  18. Zookeeper-3.4.5安装步骤及异常处理
  19. 很久没来,丢一份前阵子做的 10 万连接性能测试 (fibjs, golang, nginx, nodejs)
  20. Python基础----Socket编程规范及底层原理(三)---socketserver实现并发及底层原理

热门文章

  1. docker快速安装nginx以及实现反向代理(上)
  2. McaFee企业版v8.0i设置指南
  3. Windows 运行jar包
  4. 给计算机系统打补丁,为什么我的电脑需要打补丁?
  5. delphi盒子那些软件商店里的年轻人
  6. 安卓系统修改开机LOGO
  7. 史前技术:Mac使用SVN
  8. php主动防御,汽车主动防御系统
  9. 计算机的各种配件知识,菜鸟必读:DIY装机需要知道的一些配件小知识
  10. H5小游戏源码在哪里可以免费获取?