OAuth2.0 微信授权机制
我在了解设计Restful接口的时候,发现涉及到接口验证,可以利用OAuth2.0机制来验证。
我开发的微信端Web网页通过微信授权的时候,微信端也是用OAuth2.0机制来获取用户基本信息。
OAuth2.0
有四种授权模式:授权模式(微信)、简化模式(前者简化版)、密码模式、客户端模式。
授权模式(微信)
开发的微信端Web应用可以利用通过微信来获取用户基本信息,这样就免了用户去注册登录的繁杂步骤,只用点击微信的授权页面就能登录。
用户仅仅需要点击授权,Web应用就能通过微信拿到用户的微信基本信息,大大提高用户体验。
步骤
简化的步骤:Web后端拿到access_token,通过access_token去跟微信拿到用户信息。
所以关键是如何能够拿到access_token。
1. 用户授权
"https://open.weixin.qq.com/connect/oauth2/authorize?"
+ "appid=APPID&" // 代表你公众号
+ "redirect_uri=REDIRECTURL&" // 处理Code的URL地址
+ "response_type=code&"
+ "scope=SCOPE&" // 要拿到用户的基本微信(需要授权)还是只拿到用户的openid
+ "state=STATE&connect_redirect=1#wechat_redirect"; // state 参数用来验证 防止csrf(跨站请求伪造)攻击
这是微信官方页面,会出现授权按钮。
2. 获取access_token
一旦用户在上述页面点击了授权,那么微信就会把code参数和state参数传输到我们redirect_uri后端。
拿到state参数可用于验证,从而防止cstf。
重点在于code参数的利用。
"https://api.weixin.qq.com/"
+ "sns/oauth2/access_token?"
+ "appid=APPID&"
+ "secret=SECRET&"
+ "code=CODE&"
+ "grant_type=authorization_code";
然后再通过微信的接口,发送我们的appid和appsecret以及code,然后就能拿到access_token和授权用户的openid。
3. access_token和openid
通过access_token和openid 我们就能通过微信官方接口来获取授权用户的基本信息。
为什么access_token和openid就能拿到用户信息
1. 在微信官方页面,用户点击了授权(用户同意)
2. appsecret只有我们本身Web应用和微信才知道,同时redirect_uri也是登记在微信公众平台(Web应用的正确性)
OAuth2.0 微信授权机制的更多相关文章
- Asp.netCore 3.0 Web 实现Oauth2.0微信授权登陆的测试
1:Oauth2.0授权的流程截图 官方流程如下: 1 第一步:用户同意授权,获取code 2 第二步:通过code换取网页授权access_token 3 第三步:刷新access_token(如果 ...
- 微信公众号开发(十二)OAuth2.0网页授权
OAuth允许用户提供一个令牌,而不是用户名和密码来访问它们存放在特定服务器上的数据,每一个令牌授权一个特定的网站在特定时段内访问特定的资源. 授权过程如下: 1.引导用户进入授权页面同意授权,获取c ...
- 微信OAuth2.0网页授权
1.OAuth2.0网页授权 关于网页授权的两种scope的区别说明 1.以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页 ...
- 微信公众平台开发(71)OAuth2.0网页授权
微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使 ...
- Force.com微信开发系列(七)OAuth2.0网页授权
OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站上存储的私密资源(如用户个人信息.照片.视频.联系人列表),而无须将用户名和密码提供给第三方应用.本文将详细介绍OA ...
- 解决微信OAuth2.0网页授权回调域名只能设置一个的问题
https://github.com/HADB/GetWeixinCode GetWeixinCode 解决微信OAuth2.0网页授权回调域名只能设置一个的问题 使用方法 部署get-weixin- ...
- ***微信公众平台开发: 获取用户基本信息+OAuth2.0网页授权
本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息, ...
- 微信公众平台开发-OAuth2.0网页授权(含源码)
微信公众平台开发-OAuth2.0网页授权接口.网页授权接口详解(含源码)作者: 孟祥磊-<微信公众平台开发实例教程> 在微信开发的高级应用中,几乎都会使用到该接口,因为通过该接口,可以获 ...
- C#-MVC开发微信应用(2)--OAuth2.0网页授权
微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一. ...
随机推荐
- Backup--完整备份会打破现有的日志备份链么?
--问题描述: --对数据库有一个周期性数据库备份和事务日志备份的维护计划,在维护计划外有工作人员对数据库进行完整备份,该备份会打乱现有的日志备份链么? --===================== ...
- Replication--将LSN转换成16进制
在复制中经常会使用到16进制的LSN,但在日志fn_dblog中的LSN是数字形式,于是从网上找到以下转换函数CREATE FUNCTION dbo.fn_convertnumericlsntobin ...
- python 批量创建文件
# coding:utf8 import os path = "D:/Python_mkfile" os.chdir(path)#切换到该目录 ysyl = u"验收文件 ...
- WebApi与Mvc的区别
ASP.NET Mvc是基于ASP.NET管道设计的框架,但是Mvc应用程序只能在iis中运行,而WebApi框架既可以寄宿在IIs上也可以在Self-Host上进行处理. Mvc和webapi都有相 ...
- js ~或者~~
问题:~是什么意思? 答:js中是对数字取反 var a = null; var b = '23' console.log(~~null) console.log(~~b)
- java 编译器级别与项目版本不匹配
java compiler level does not match the v examime. java 编译器级别与项目版本不匹配. 解决: 在当前项目上点右键,属性 Pro ...
- 一文读懂加固apk的开发者是怎么想的
有人说加固会明显拖慢启动速度,同时造成运行卡顿,严重降低用户体验,而且加固是完全可以脱壳的,只需要pc配合进行断点调试就能抓到解密后的dex文件,加固并没有所说的那么安全. 但是为什么还有一大批开发者 ...
- “全栈2019”Java第五十九章:抽象类与抽象方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 接口测试:添加header信息
一.获取所有学生信息的接口文档内容 二.使用postman进行测试 选择请求方式.填写URL.填写Headers下的参数值(key是Referer.value是接口文档中的value值) 三.使用jm ...
- [Objective-C语言教程]决策结构(10)
决策结构要求程序员指定一个或多个要由程序评估或测试的条件,以及在条件被确定为真时要执行的一个或多个语句,以及可选的,如果条件要执行的其他语句 被认定是假的. 以下是大多数编程语言中的典型决策结构的一般 ...