实现步骤

1 第一步:用户同意授权,获取code

2 第二步:通过code换取网页授权access_token

3 第三步:刷新access_token(如果需要)

4 第四步:拉取用户信息(需scope为 snsapi_userinfo)

5 附:检验授权凭证(access_token)是否有效

参考文档

准备材料

一个服务号(已认证),确保网页授权权限已开通

1、点击修改,跳转到公众号设置页,此处需要添加一个域名文件校验

2、通过authorize获取的code

调用https://open.weixin.qq.com/connect/oauth2/authorize

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Document</title>
</head>
<style>
</style>
<body>
<div id="container">
</div>
<script>
window.appId = `${appId}`
   //注意:此处redirect_uri需要使用encodeURIComponent(该方法浏览器自带)转义
let local = "http://xxx"
// 跳转到授权页面
window.location.href =
"https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
window.appId +
"&redirect_uri=" +
encodeURIComponent(local) +
"&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
</script>
</body>
</html>

参数说明:

snsapi_base与snsapi_userinfo属于微信网页授权获取用户信息的两种作用域

snsapi_base只能获取access_token和openID

snsapi_userinfo可以获取更详细的用户资料,比如头像、昵称、性别等,该种形式会唤醒授权页面

3、调用https://api.weixin.qq.com/sns/oauth2/access_token,获取access_token

返回值如下

{"access_token":"accesstoken","refresh_token":"refreshtoken","openid":"openId","scope":"snsapi_userinfo","expires_in":7200}

常见错误码发生情况

{"errcode":40029,"errmsg":"invalid code, rid: 620e3db2-410d5515-117f31ac"}

这种问题一般都发生在code上,要检查code是不是有值并且是不是重复调用了

4、根据accessToken和openId查询用户信息,调用https://api.weixin.qq.com/sns/userinfo?access_token=accessToken&openid=openIdlang=zh_CN

返回值如下

{"country":"","province":"","city":"","openid":"openid","sex":0,"nickname":"sum墨","headimgurl":"https://thirdwx.qlogo.cn/mmopen/vi_32/KqPuMLU8JmRIlicUSvia4PR0vNKWKLFmfR6icibJ2Us7EyZXbZaKBd30qjGYJJSkmdHoib66wiaicQia61R34xC7Jr8EJg/132","language":"","privilege":[]}

我的小程序之旅六:微信公众号授权登录(适用于H5小程序)的更多相关文章

  1. 【tp5.1】微信公众号授权登录及获取信息录入数据库

    微信公众号开发文档链接:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 微信公众号授权登录分为两种: 1.以 ...

  2. uniapp - 微信公众号授权登录

    [缘由] 采用uniapp进行微信小程序和微信公众号双版本开发:考虑到用户唯一性,我们后端确定了以“unionid”.作为唯一标识. 有的小伙伴估计也是刚入这坑,我就简单说一下步骤流程   [摸索] ...

  3. 解决微信公众号授权登录和开放平台微信第三方应用授权登录获取到的用户Openid关联问题

    开发背景: 最近一段时间一直在做关于微信方面的网站应用开发,这段时间也收获的不少关于微信开发方面的开发技能,接触的比较多的主要有微信公众号和微信网站app第三方登录授权,以及微信会员卡,优惠券和扫描二 ...

  4. 微信公众号授权登录,整合spring security

    公司的业务需求,对接了微信公众号授权,通过微信公众号的接口拿到用户信息进行业务系统的登录,话不多说上代码,我的实现方式是整合了spingSecurity 首先是接口 @PostMapping(&quo ...

  5. 微信公众号授权登录,提示“redirect_uri 参数错误”

    做微信公众号开发授权登录的时候遇到的坑... 后台服务用node,index.js相关代码如下: const oauth = new OAuth(conf.appid, conf.appsecret) ...

  6. 微信公众号授权登录后报redirect_uri参数错误的问题

      在进行微信公众号二次开发的时候,需要通过授权码模式来进行微信授权.比如,在进行登录的时候,用户点击了登录按钮,然后弹出一个授权框,用户点击同意后,就可以获取用户的OpenId等信息了.这篇文章主要 ...

  7. Chrome插件:微信公众号自动登录(chrome.extension)

    manifest.json: { "manifest_version": 2, "name": "WX.AutoLogin", " ...

  8. 程序员的专属微信公众号编辑器:定制 Markdown 转 HTML

    效果(Gif) 点击我查看 仓库地址 https://github.com/cdk8s/cdk8s-markdown-to-html https://gitee.com/cdk8s/cdk8s-mar ...

  9. PHP之路——微信公众号授权获取用户信息

    官方文档链接:http://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html /** * 获取code */ public f ...

  10. 微信公众号授权,支付,退款总结【shoucang】

    1.支付前准备 1.1首先两个平台接入账户. 商户平台:https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2F 公众平台: ...

随机推荐

  1. Grafana针对内存监控值的学习与使用

    Grafana针对内存监控值的学习与使用 背景 因为学习内存相关的知识, 可以通过pgcacher/sar -r 等命令监控系统信息. 但是现在发现. 不太直观, 所以想着使用别的方式来进行处理. 然 ...

  2. [转帖]军备芯片14nm对比5nm,在战场上差距在哪里?

    https://www.eet-china.com/mp/a207185.html 现在全球已经打响科技之战,每个国家都在力求让自己做到足够拔尖.美国商务部长就曾自曝家底说,美国制定两套战略应对在芯片 ...

  3. [转帖]疑问:进程在竞争CPU时并没有真正运行,为什么还会导致系统的负载升高?

    疑问:进程在竞争CPU时并没有真正运行,为什么还会导致系统的负载升高? 因为存在CPU上下文切换. linux系统说明 Linux是一个多任务操作系统,它支持远大于CPU数量的任务同时运行.当然,这些 ...

  4. 部署于K8S集群上面应用性能影响点推测

    前言 本人2017年第一次接触K8S. 中间断断续续学习K8S相关的内容. 但是最近一年,几乎没太有学习. 因为之前学习了四五年, 一直以为产品马上要用 结果一直被浇冷水. 去年开始学乖了. 不这么搞 ...

  5. git中git cherry-pick的使用

    git中git cherry-pick的使用 A分支是从远端的开发分支dev拉取的 B分支是从远端的测试分支rel拉取的 现在我们遇见一个问题. 我们在A分支修改了代码.并且推送到了远端的dev分支. ...

  6. 在Linux Ubuntu系统中部署C++环境与Visual Studio Code软件

      本文介绍在Linux Ubuntu操作系统下,配置Visual Studio Code软件与C++代码开发环境的方法.   在文章VMware虚拟机部署Linux Ubuntu系统的方法中,我们介 ...

  7. 【python】SSTI模版注入

    0x00  Python Vene环境及介绍 venv虚拟环境:创建和管理虚拟环境的模块 首先apt update更新一下包管理 安装你当前版本的python-venv 选择一个目录,安装venv虚拟 ...

  8. TienChin 活动管理-工程创建

    工程模块的创建,与之前创建渠道管理一样的,所以这里就不贴图带着大家一起动手进行了,表结构我已经给到大家了,这里我只贴一下代码生成器的代码部分即可. @Test void generateActivit ...

  9. ShardingSphere

    目录 1.ShardingSphere分表与分库分表 2.ShardingSphere分库分表查询 3.自定义分片算法实现range查询 4.SPI扩展机制概述 5.stand通过SPI实现range ...

  10. springboot security 权限控制 -- @PreAuthorize 的使用

    1. 说明 security 鉴权方式常用的有两种配置,1.配置文件中配置:2.使用注解标注:他们都是基于 acess 表达式,如果需要自定义逻辑的鉴权认证,只需要自定义 access 表达式即可.本 ...