认证步骤
- 在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的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时序图
相关推荐
通过点击viewbutton获取用户openid,实现方式oauth2.0认证
使用idea开发工具,基于springboot2.x、jwt鉴权、nginx集群,前后端分离的微信Oauth2.0一键登录和微信网页扫码支付测试开发demo
*微信认证获取openid部分: *临时认证code */ //微信认证部分:第二步 获得code string code = Request["code"]; if (string.IsNullOrEmpty(code)) { //如果code没获取成功,重新拉取一遍 OpenAccess(); }...
oauth2.0第三方 qq、sina、baidu、renren、osc、豆瓣 等,登陆的简易封装!
在AuthAction中的初始化函数_initialize中进行了OAuth2.0受权,所有基于AuthAction的控制器都将进行受权过程(除了微信API认证过程wechatInitAuth)。 对于同一用户在受权过期时间内多次打开此控制器的页面,将不会...
详细讲解OAuth2.0的基本原理及其应用,希望与大家一起交流,共同进步。
下载 ngrok 参考网址 ...使用 cd D:\ngrok-stable-windows-amd64 d: ngrok.exe authtoken 3WeiJgYsiohmTTbZ8HB5L_4DoK3ThFJ69Wx5iS8UGJz ... 下载 web 开发者工具,找到 下载地址 ...3、网页服务--》网页帐号--》修改--》......
微信公众平台开发OAuth2.0网页授权认证
spring cloud + vue + oAuth2.0全家桶实战,前后端分离模拟商城,完整的购物流程、后端运营平台,可以实现快速搭建企业级微服务项目。支持微信登录等三方登录。
在AuthAction中的初始化函数```_initialize```中进行了OAuth2.0受权,所有基于AuthAction的控制器都将进行受权过程(除了微信API认证过程wechatInitAuth)。 对于同一用户在受权过期时间内多次打开此控制器的页面...
微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息
spring cloud + vue + oAuth2.0全家桶实战,前后端分离模拟商城,完整的购物流程、后端运营平台,可以实现快速搭建企业级微服务项目。支持微信登录等三方登录。 功能点: 模拟商城,完整的购物流程、后端运营平台...
oauth2.0认证!支付宝、微信相关sdk是采用它进行鉴权的
理解OAuth 2.0 小程序官方文档 微信小程序之登录态维护(十一) 微信的登陆认证方式跟Oauth的授权码认证模式非常相似,接下来我大致讲解Oauth的三种常用模式以及与微信登陆认证的关联。 Oauth的三种常用模式 密码模式 ...
spring cloud + vue + oAuth2.0全家桶实战,前后端分离模拟商城,完整的购物流程、后端运营平台,可以实现快速搭建企业级微服务项目。支持微信登录等三方登录。 功能点: 模拟商城,完整的购物流程、后端运营平台对...
采用授权方式的OAuth2.0协议的出现解决了以上的各种问题,什么是OAuth2.0呢 (引导用户发起授权请求)客户端向用户询问,用户允许授权 获取到code和state 将code发送给服务端, 服务端携带code请求验证服务器,获取OpenID...
微信登录认证授权 Wechat login authorization. This package provides Wechat OAuth 2.0 support for the PHP League's OAuth 2.0 Client
使用 OAuth 1.0a 和 OAuth 2.0 使用 [微信] 进行身份验证的策略。 此模块允许您在 Node.js 应用程序中使用微信进行身份验证。 通过插入 Passport,可以轻松且不显眼地将微信身份验证集成到任何支持式中间件的应用...
企业应用中的URL链接(包括自定义菜单或者消息中的链接),可以通过OAuth2.0来获取员工的身份信息。 注意,此URL的域名,必须完全匹配企业应用设置项中的'可信域名',否则获取用户信息时会返回50001错误码。 可信...
Java结合Oauth2.0协议实现微信扫码登录并实现认证授权