微信:公众号授权登录
第一步:用户同意授权,获取code
在确保公众账号拥有授权作用域(scope参数)的权限的前提下,引导关注者打开如下页面:
尤其注意:如果链接的参数顺序不对,授权页面将无法正常访问https://open.weixin.qq.com/connect/oauth2/authorize ?appid=APPID // 公众号的唯一标识 &redirect_uri=REDIRECT_URI // 授权后重定向的回调链接地址, 使用 urlEncode 对链接进行处理 &response_type=code // 返回类型,填写code &scope=SCOPE // 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 ) &state=STATE#wechat_redirect // 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节。#wechat_redirect 是 无论直接打开还是做页面302重定向时候,必须带此参数若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。
参考链接(请在微信客户端中打开此链接体验):
尤其注意:跳转回调redirect_uri,应当使用https链接来确保授权code的安全性。// scope为snsapi_base https://open.weixin.qq.com/connect/oauth2/authorize ?appid=wx520c15f417810387 &redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60 &response_type=code &scope=snsapi_base &state=123#wechat_redirect//scope为snsapi_userinfo https://open.weixin.qq.com/connect/oauth2/authorize ?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php &response_type=code &scope=snsapi_userinfo &state=STATE#wechat_redirect
用户同意授权后
如果用户同意授权,页面将跳转至
redirect_uri/?code=CODE&state=STATE。
第二步:通过code换取网页授权access_token
公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
尤其注意:由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。
// 请求方法
// 获取code后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token
?appid=APPID // 公众号的唯一标识
&secret=SECRET // 公众号的appsecret
&code=CODE // 填写第一步获取的code参数
&grant_type=authorization_code // 填写为authorization_code// 返回说明
// 正确时返回的JSON数据包如下:
{"access_token":"ACCESS_TOKEN", // 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同"expires_in":7200, // access_token接口调用凭证超时时间,单位(秒)"refresh_token":"REFRESH_TOKEN", // 用户刷新access_token"openid":"OPENID", // 用户唯一标识"scope":"SCOPE" // 用户授权的作用域,使用逗号(,)分隔
}
第三步:刷新access_token(如果需要)
access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。
// 请求方法
// 获取第二步的refresh_token后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/refresh_token
?appid=APPID // 公众号的唯一标识
&grant_type=refresh_token // 填写为refresh_token
&refresh_token=REFRESH_TOKEN // 填写通过access_token获取到的refresh_token参数//返回说明
//正确时返回的JSON数据包如下:
{ "access_token":"ACCESS_TOKEN","expires_in":7200,"refresh_token":"REFRESH_TOKEN","openid":"OPENID","scope":"SCOPE"
}
第四步:拉取用户信息(需scope为 snsapi_userinfo)
如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。
//请求方法
//http:GET(请使用https协议)
https://api.weixin.qq.com/sns/userinfo
?access_token=ACCESS_TOKEN // 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
&openid=OPENID // 用户的唯一标识
&lang=zh_CN // 国家地区语言版本//返回说明
//正确时返回的JSON数据包如下:
{ "openid": "OPENID","nickname": NICKNAME,"sex": 1,"province":"PROVINCE","city":"CITY","country":"COUNTRY","headimgurl":"https://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46","privilege":[ "PRIVILEGE1" "PRIVILEGE2" ],"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
附:检验授权凭证(access_token)是否有效
// 请求方法
// http:GET(请使用https协议)
https://api.weixin.qq.com/sns/auth
?access_token=ACCESS_TOKEN
&openid=OPENID
示例:
<script>// 1、授权export default {onLoad() {this.wx_login();},methods: {//微信登录wx_login(){let appId= 'wxe1*******2d0d3d';let Host = encodeURIComponent('https://ceshi.com/pages/guide/getOpenid');console.log(Host);window.location.href =`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${Host}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`},},}// getOpenid页面获取openidexport default {onLoad(option) {var arr = window.location.search;var code = arr.split('=')[1].split('&')[0];this.$http.post("/api/WxPay/getOpenid",{code:code}).then(res=>{if(res.code == 1){uni.setStorageSync('openid', res.data.openid);this.$goBack(3,'/pages/index/index')}})},}
</script>
微信:公众号授权登录相关推荐
- 微信公众号授权登录(asp.net + angular)
微信是时下最火的,上面有数以亿计的用户,如果能接入微信将大大减低注册门槛,当然,接入微信登录是有门槛的.微信登录一般有两个,一个是微信开放平台授权登录,一个是微信公众号授权登录,两者都需要认证才可以继 ...
- vue移动端项目微信公众号授权登录
前言 在我们做移动端项目时, 很多功能是以登录后才能进行后续的操作, 并且许多pc端的网页都有微信扫码登录功能, 为了做到pc与移动端统一, 往往移动端项目需要添加微信登录功能, 那么为什么手机端不能 ...
- Java在Web端微信公众号授权登录
Java在Web端微信公众号授权登录 1.需要在微信开发平台配置 url:是自己服务中的微信需要推给你的地址(需要使用二级域名,可以去添加链接描述)购买9块钱1个月使用权或者白嫖都可 token 这个 ...
- H5 微信公众号 授权登录 前后端分离篇(资料准备+前端01)
实现微信公众号授权登录,很简单,但是注意的地方要细心,小伙伴们跟着我的思路一起实现吧! 文章目录 一.帐号申请 1. 正式账号 2. 测试帐号 二.微信文档 2.1. 文档主页 2.2. 授权流程 2 ...
- 【SpringBoot学习】46、SpringBoot 集成 Uniapp 实现微信公众号授权登录
文章目录 一.公众号环境搭建 二.Spring Boot 集成微信公众号 1.application.yml 微信配置 2.控制层接口 三.Uniapp 实现授权登录 一.公众号环境搭建 本篇文章使用 ...
- uni-app 对FastAdmin微信公众号授权登录实例
uni-app 对FastAdmin微信公众号授权登录实例 uniapp 微信公众号授权登录代码 跳转获取code 提交fastadmin 第三方登录插件 进行登录验证 存储token onLoad( ...
- RuoYi-App移动版(uni-app)微信公众号授权登录
前言 略 uni-app 未提供微信公众号授权登录 uni.login是一个客户端API,统一封装了各个平台的各种常见的登录方式,包括App手机号一键登陆.三方登录(微信.微博.QQ.Apple.go ...
- Spring boot 项目(十三)——实现微信公众号授权登录获取用户信息
引言 微信公众号开发中,必不可少的一环:公众号授权登录.获取微信用户信息 前期准备 内网渗透=>生成本地指定端口映射的外网域名 链接:内网渗透工具natapp使用详解 域名生成之后修改yml文件 ...
- 基于Spring Boo微信公众号授权登录获取用户信息(附带完整源码)
简介 微信公众号开发中,必不少可少的一环:公众号授权登录.获取微信用户信息. 本地完整运行环境准备 内网渗透=>生成本地指定端口映射的外网域名 传送门:内网渗透工具Natapp使用详解 域名生成 ...
- uniapp微信公众号授权登录,本地调试
在项目如何集中微信公众号授权登录 后端跳转获取code码,最后拼接, //保留登录前的页面参数.为了不让参数传到后台,并且在微信授权链接带来带去,可以将参数和登录前的地址存到本地缓存let route ...
最新文章
- RocksDB线程局部缓存
- [翻译]No.9352 SharePoint Pages(1)之SharePoint页面体系架构
- a*算法的优缺点_轻松理解机器学习算法-朴素贝叶斯
- UA SIE545 优化理论基础1 凸分析3 凸集与凸包
- 关于Git下载上传项目的操作指令
- 5G(10)----5G 终端发展
- eclipse maven maven-archetype-webapp 创建失败
- java file 实例_Java File类的详解及简单实例
- ajax中的一些参数的含义及用法
- 新美域杂志新美域杂志社新美域编辑部2022年第6期目录
- 区块链从业者地摊致富秘籍
- win10命令窗口在哪里
- matlab多元方程整数解,matlab多元非线性方程组解法
- H5,小程序中实现小红书式排序 瀑布流(横向排序) macy插件实际使用
- 恒州诚思——2022-2028全球硫酸镱行业调研及趋势分析报告
- js实现图片瀑布流布局
- 关于rac环境中的alter ext进程名, begin now
- netstat -tlun
- matlab一直系统函数画脉冲响应,Matlab 相关分析法求系统脉冲响应(三)
- 那些年,我们一起追过的Code......
热门文章
- 在达梦数据库下创建数据库
- SAP License:ERP系统和OA系统的区别?
- 计算机及软件工程专业基础综合,2019年东华大学854计算机及软件工程专业基础综合考研初试大纲...
- 计算机教师计算机网络面试题,初中信息技术教师资格面试真题及答案:IP地址...
- 面对疫情,大学生如何保持良好的心理状态
- lenovo启动热键_联想的u盘启动快捷键是什么_电脑开机如何进入u盘启动
- WebView下载文件
- Xshell远程连接服务器
- word图片另存为变黑色_五种方法可将Word文档转换成图片文件
- python控制电脑休眠唤醒键_使用Python实现Wake On Lan远程开机功能