认证步骤
- 在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。
- 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数
什么是授权临时票据(code)?
答:第三方通过code进行获取access_token的时候需要用到,code的超时时间为10分钟,一个code只能成功换取一次access_token即失效。code的临时性和一次保障了微信授权登录的安全性。第三方可 通过使用https和state参数,进一步加强自身授权登录的安全性。
(获取code方法一)
请求示例 登录一号店网站应用 https://passport.yhd.com/wechat/login.do 打开后,一号店会生成state参数,跳转到 https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect 微信用户使用微信扫描二维码并且确认登录后,PC端会跳转到 https://passport.yhd.com/wechat/callback.do?code=CODE&state=3d6be0a4035d839573b04816624a415e
appid | 是 | 应用唯一标识 |
redirect_uri | 是 | 重定向地址,需要进行UrlEncode |
response_type | 是 | 填code |
scope | 是 | 应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可 |
state | 否 | 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验 |
(获取code方法二)
为了满足网站更定制化的需求,我们还提供了第二种获取code的方式,支持网站将微信登录二维码内嵌到自己页面中,用户使用微信扫码授权后通过JS将code返回给网站。 JS微信登录主要用途:网站希望用户在网站内就能完成登录,无需跳转到微信域下登录后再返回,提升微信登录的流畅性与成功率。 网站内嵌二维码微信登录JS实现办法: 步骤1:在页面中先引入如下JS文件(支持https): <script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script> 步骤2:在需要使用微信登录的地方实例以下JS对象: var obj = new WxLogin({ id:"login_container", appid: "", scope: "", redirect_uri: "", state: "", style: "", href: "" }); 参数说明 参数 是否必须 说明 id 是 第三方页面显示二维码的容器id appid 是 应用唯一标识,在微信开放平台提交应用审核通过后获得 scope 是 应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可 redirect_uri 是 重定向地址,需要进行UrlEncode state 否 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验 style 否 提供"black"、"white"可选,默认为黑色文字描述。详见文档底部FAQ href 否 自定义样式链接,第三方可根据实际需求覆盖默认样式。详见文档底部FAQ
- 通过code参数加上AppID和AppSecret等,通过API换取access_token
样例: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 参数说明 参数 是否必须 说明 appid 是 应用唯一标识,在微信开放平台提交应用审核通过后获得 secret 是 应用密钥AppSecret,在微信开放平台提交应用审核通过后获得 code 是 填写第一步获取的code参数 grant_type 是 填authorization_code 返回说明 正确的返回: { "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE", "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL" } 参数 说明 access_token 接口调用凭证 expires_in access_token接口调用凭证超时时间,单位(秒) refresh_token 用户刷新access_token openid 授权用户唯一标识 scope 用户授权的作用域,使用逗号(,)分隔 unionid 当且仅当该网站应用已获得该用户的userinfo授权时,才会出现该字段。 错误返回样例: {"errcode":40029,"errmsg":"invalid code"}
获取token时序图
相关推荐
微信OAuth2.0授权是一种广泛应用于移动应用和网站的第三方登录解决方案,主要目的是为了安全地获取用户的微信身份标识——openid,以便提供个性化服务或者与其他微信功能集成。在本文中,我们将详细探讨微信OAuth2.0...
在Web应用开发中,OAuth2.0常被用来实现社交网络平台(如QQ、新浪、百度、人人网、OSC开源中国、豆瓣等)的第三方登录功能。这种登录方式被称为“单点登录”或“统一认证”,因为它允许用户通过一个账号登录多个关联...
使用idea开发工具,基于springboot2.x、jwt鉴权、nginx集群,前后端分离的微信Oauth2.0一键登录和微信网页扫码支付测试开发demo
*微信认证获取openid部分: *临时认证code */ //微信认证部分:第二步 获得code string code = Request["code"]; if (string.IsNullOrEmpty(code)) { //如果code没获取成功,重新拉取一遍 OpenAccess(); }...
### OAuth2.0协议原理与实现 #### 一、OAuth2.0协议概述 OAuth2.0协议是一种广泛应用于第三方登录及授权的标准协议。相比于OAuth1.0版本,OAuth2.0进行了多方面的优化和改进,例如简化了授权流程、取消了Token的...
《Spring Cloud + Vue + OAuth2.0全家桶实战:构建企业级微服务项目》 在当前的互联网开发环境中,微服务架构已经成为企业级应用的重要选择。Spring Cloud作为Java领域的微服务治理框架,Vue.js作为前端的轻量级库...
通过以上步骤,微信企业OAuth2.0验证接口设计实现了安全、高效地获取和使用用户信息,同时避免了频繁的用户认证,提升了用户体验。在实际开发中,还需要考虑错误处理、令牌刷新、安全性增强等细节,以确保系统的稳定...
无论是支付宝、微信还是其他第三方服务,都可以采用OAuth 2.0来实现接口的对接和安全的资源访问授权。由于文档中提及了RFC6749,即OAuth 2.0的具体规范文档,开发者可以通过深入研究RFC6749文档来获得关于OAuth 2.0...
OAuth2.0通过在客户端和服务提供商之间建立一个授权层,确保了用户数据的安全性。 OAuth2.0的工作流程主要包括以下几个步骤: 1. 用户打开客户端,客户端请求用户授权。 2. 用户同意授权,授权信息被传递给客户端。...
在AuthAction中的初始化函数_initialize中进行了OAuth2.0受权,所有基于AuthAction的控制器都将进行受权过程(除了微信API认证过程wechatInitAuth)。 对于同一用户在受权过期时间内多次打开此控制器的页面,将不会...
下载 ngrok 参考网址 ...使用 cd D:\ngrok-stable-windows-amd64 d: ngrok.exe authtoken 3WeiJgYsiohmTTbZ8HB5L_4DoK3ThFJ69Wx5iS8UGJz ... 下载 web 开发者工具,找到 下载地址 ...3、网页服务--》网页帐号--》修改--》......
通过学习和理解这些内容,开发者可以有效地将百度OAuth2.0登录集成到自己的C# MVC应用中,为用户提供更便捷的登录体验。同时,这种方式也适用于其他支持OAuth2.0的平台,如微信、QQ等,只需要更换对应的API和配置...
微信公众平台开发OAuth2.0网页授权认证
Spring Security OAuth2是基于Spring Cloud/Spring Boot环境下使用OAuth2.0的解决方案,为开发者提供了全套的组件来支持OAuth2.0认证。然而,在开发过程中,我们会发现由于Spring Security OAuth2的组件特别全面,...
在AuthAction中的初始化函数```_initialize```中进行了OAuth2.0受权,所有基于AuthAction的控制器都将进行受权过程(除了微信API认证过程wechatInitAuth)。 对于同一用户在受权过期时间内多次打开此控制器的页面...
spring cloud + vue + oAuth2.0全家桶实战,前后端分离模拟商城,完整的购物流程、后端运营平台,可以实现快速搭建企业级微服务项目。支持微信登录等三方登录。 功能点: 模拟商城,完整的购物流程、后端运营平台...
在移动互联网时代,许多第三方服务,例如支付宝、微信等SDK均采用了OAuth 2.0来进行鉴权处理,以确保用户数据的安全性及应用间的信任关系。 #### 二、OAuth 2.0 基本概念 OAuth 2.0 主要涉及到四个关键的概念: 1...
理解OAuth 2.0 小程序官方文档 微信小程序之登录态维护(十一) 微信的登陆认证方式跟Oauth的授权码认证模式非常相似,接下来我大致讲解Oauth的三种常用模式以及与微信登陆认证的关联。 Oauth的三种常用模式 密码模式 ...
SpringMVC提供了便捷的注解支持和自定义过滤器/拦截器机制,使得开发者能灵活地集成和实现OAuth2认证流程。在实际项目中,根据业务需求选择合适的方法,并确保安全性,是实施OAuth2验证的关键。 注意,由于提供的...