不知觉间已经接触了几次微信支付开发,而要进行微信支付就需要用户的唯一标识:openid。还记得第一次获取用户openid的时候就踩了很多坑。这两天又接触了一下,想着索性就把他记录下来,也便于以后查阅

一、准备工具

不管开发什么,官方的文档应该是第一个想到的这里把官方文档贴出来:微信网页授权文档
除此之外,我们还需要一个内网穿透的工具在开发环境下让微信能访问到我们的域名。我使用的是natapp。此类工具网上有很多,大家可以自行寻找。
这里我们使用微信提供的测试账号来作为演示

二、开始开发

内网穿透就不在这里演示了,下面我们直入主题:
1.填写网页授权域名
在这篇文档的一开始就埋了一个坑

这段话就是说,我们在开发前需要在图片中框红的位置填入我们所要开发的域名。这里我们使用的是测试环境,所以需要在测试账号管理页面的这个位置填入我们自己的域名,这里要注意填入域名的规则。

2.文档阅读
接着阅读文档我们可以发现网页授权有两种scope,
snsapi_base和snsapi_userinfo。两种scope都可以获取到opeid,不同的是snsapi_userinfo除了openid外还可以获取到用户的基本信息,但是需要用户手动进行确认。
再往下阅读我们可以看到官方文档的授权步骤

  • 第一步:用户同意授权,获取code
  • 第二步:通过code换取网页授权access_token以及openid
  • 第三步:刷新access_token(如果需要)
  • 第四步:拉取用户信息(需scope为 snsapi_userinfo)

我们只需要openid,所以我们只开发到第二步就好了。下面我们就按着官方步骤来开发。

3.获取code
查看文档后我们发现我们需要拼接一个url并且访问它。url的参数文档中写的很清楚了。看他的例子也能看个清楚。这里比较重要的是redirect_uri。这个参数所填的是一个链接。我们访问url后会自动转发到这个链接并且将我们需要的code以及拼接url中的state的值作为参数。这个redirect_uri的值要填入的是我们代码中的controller的位置。
所以这里我们需要一段代码:

/*** <pre>* Description: wechat OAuth2.0* Author:        lllx* Version:        1.0* Created at:    2018/2/1* </pre>*/
@RestController
@RequestMapping("/weixin")
@Slf4j
public class WeixinController {@GetMapping("/auth")public void auth(@RequestParam("code") String code,@RequestParam("state") String state){log.info("auth开始了。。。。");log.info("code={}",code);log.info("state={}",state);}
}

我拼接的url,这里大家要注意根据自己的情况进行拼接。拼接成功后需要在微信app中进行访问

https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx&redirect_uri=http://xxx/sell/weixin/auth&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

访问后的结果

这样我们就拿到了code
4.获取openid
继续查看文档,发现我们只需要使用获取到的code再访问另一个url就可以获取到我们想要的了。接着上面的代码

/*** <pre>* Description: wechat OAuth2.0* Author:        lllx* Version:        1.0* Created at:    2018/2/1* </pre>*/
@RestController
@RequestMapping("/weixin")
@Slf4j
public class WeixinController {@GetMapping("/auth")public void auth(@RequestParam("code") String code,@RequestParam("state") String state){log.info("auth开始了。。。。");log.info("code={}",code);log.info("state={}",state);String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=xxxx&secret=xxxx&code="+code+"&grant_type=authorization_code";RestTemplate restTemplate = new RestTemplate();String result = restTemplate.getForObject(url, String.class);log.info("result={}",result);}
}

这时我们再次访问第三步拼接的url就可以看到如下结果。

将结果格式化一下我们可以就看到我们想要的openid

三、总结

流程看起来还是很简单的。但以上只是一个最简单、最直接的手工获取openid的例子。真正在使用过程中需要结合自身的业务流程来进行开发,这时可能就有些麻烦了。此时我们也可以借助一些网上第三方sdk来开发。例如:weixin-java-tools。


本文作者: catalinaLi
本文链接: http://catalinali.top/2018/we...
版权声明: 原创文章,有问题请评论中留言。非商业转载请注明作者及出处。

微信开发之微信网页授权获取openid相关推荐

  1. 微信公众平台-测试号网页授权-获取openid方法

    文章目录 1.创建自己的测试号 2.测试号管理信息填写(注意仔细一步步对照) 3.手动获取openid 4.使用SDK获取openid 1.创建自己的测试号 通过申请链接:https://mp.wei ...

  2. Weixin4j微信开发网页授权获取openid案例

    前言 weixin4j网页静默授权获取openid案例 **说明:**微信网页授权基础知识请参考官方文档. 静默授权获取OpenId 本 示例基于weixin4j开发,weixin4j是Java微信开 ...

  3. asp.net mvc C# 微信公众号-服务号开发 (用户网页授权获取用户昵称头像信息)...

    参考文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 一.安装Senparc.Weixin NuGet包 ...

  4. 【wechat】微信开发——OAuth2.0网页授权

    一.框架.工具 spring+springMvc+idea 二.具体实现 1.首先需要了解一下微信提供的API开发文档 2.目的:授权后可获取用户基本信息,进而实现业务逻辑 3.需要的配置(参看API ...

  5. asp.net获取浏览器的唯一标识_vue单页面应用如何在微信浏览器里进行网页授权获取用户信息

    前言 在vue单页面应用比较流行的时代,如何把vue应用和微信公众号两者结合在一起也是比较常见的功能.如果仅仅是把一个vue应用放在公众号上,没有进行额外的微信功能开发,如:获取用户信息,支付,分享等 ...

  6. PHP实现微信公众平台开发---提升篇(网页授权接口)

    网页授权接口(类似于浏览器通过cookie|session标识客户 微信端通过openid标识) 接口类型(通过网页授权 获取openid) snsapi_base:基本类型 静默授权并自动跳转到回调 ...

  7. 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息

    第一部分:微信授权获取基本信息的介绍 我们首先来看看官方的文档怎么说: 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域 ...

  8. 微信小程序通过web-view网页授权获取用户公众号OpenID

    小程序中实现网页授权获取微信公众号OpenID 1.准备工作 2.应用场景说明 3.实现步骤 结语 1.准备工作 第一步: 通过该地址https://mp.weixin.qq.com/debug/cg ...

  9. 连小白都能看懂的微信开发之微信网页授权 + 获取微信用户信息

    微信网页授权 所谓的微信网页授权说白了就是 用户微信客户端内访问第三方网页,公众号可以根据网页授权这个机制来获取用户的基本信息,然后进行相应的逻辑处理. 官方文档 : https://mp.weixi ...

最新文章

  1. 机器学习:信用风险评估评分卡建模方法及原理
  2. exchange 只发送邮件 不能登录_springboot + rabbitmq发送邮件
  3. pstack 安装linux_pstack命令_Linux pstack 命令用法详解:显示每个进程的栈跟踪
  4. 2021年12月2日星期四的 Hybris Eclipse 导入尝试
  5. SAP CRM呼叫中心里的事件注册机制
  6. python22个字符串长度_python字符串处理内置方法一览表
  7. plotly包安装_Plotly(一)安装指南
  8. linux内核 panic,linux 内核 panic
  9. 求链表是否有环和第一个交点
  10. Docker容器系列教程(三):jenkins环境搭建与插件安装
  11. 1051: [HAOI2006]受欢迎的牛 (tarjan强连通分量+缩点)
  12. python Asyncore.dispatcher 理解
  13. 解决斑马打印机打中文的问题
  14. MSDN资源下载网站源码
  15. vs2022 E1696 无法打开 源 文件 “string.h“
  16. 2021-09-13 备份
  17. vs2019 编译生成dll,lib,并做调用
  18. 设置img标签的默认图片
  19. TRS内容管理平台用户注册逻辑漏洞
  20. 下列HTML标签是段落标签的是,HTML段落标签

热门文章

  1. 2012年报刊杂志订阅目录【全面 1900条记录】
  2. 如何播放无限长度的音乐
  3. 杂谈之WEB前端工程师身价
  4. shell 知:sed
  5. Kakaotalk PC端无法登录,错误代码50151
  6. 路尚中国集团2020全新启程,和路尚中国集团一起追梦前行吧!
  7. python3GUI--网络收音机By:PyQt5(附源码)
  8. 两边双虚线是什么意思_行车道上双实线中又有双虚线是什么意思?
  9. 20220104英语学习
  10. qq轻聊版打开后显示服务器返回数据错误,QQ轻聊版已从官方消失 腾讯难道反悔了?...