`

OAuth 2.0 微信认证学习

 
阅读更多

认证步骤

 

  • 在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的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授权

    微信OAuth2.0授权是一种广泛应用于移动应用和网站的第三方登录解决方案,主要目的是为了安全地获取用户的微信身份标识——openid,以便提供个性化服务或者与其他微信功能集成。在本文中,我们将详细探讨微信OAuth2.0...

    oauth2.0第三方 qq、sina、baidu、renren、osc、豆瓣 等,登陆的简易封装!

    在Web应用开发中,OAuth2.0常被用来实现社交网络平台(如QQ、新浪、百度、人人网、OSC开源中国、豆瓣等)的第三方登录功能。这种登录方式被称为“单点登录”或“统一认证”,因为它允许用户通过一个账号登录多个关联...

    基于springboot2.x的Oauth2.0一键授权登录和微信网页扫码支付测试开发案例(含源码)

    使用idea开发工具,基于springboot2.x、jwt鉴权、nginx集群,前后端分离的微信Oauth2.0一键登录和微信网页扫码支付测试开发demo

    微信公众号 Oauth 2.0 授权登录认证

    *微信认证获取openid部分: *临时认证code */ //微信认证部分:第二步 获得code string code = Request["code"]; if (string.IsNullOrEmpty(code)) { //如果code没获取成功,重新拉取一遍 OpenAccess(); }...

    OAuth2.0协议原理与实现

    ### OAuth2.0协议原理与实现 #### 一、OAuth2.0协议概述 OAuth2.0协议是一种广泛应用于第三方登录及授权的标准协议。相比于OAuth1.0版本,OAuth2.0进行了多方面的优化和改进,例如简化了授权流程、取消了Token的...

    微信企业OAuth2.0验证接口设计思路

    通过以上步骤,微信企业OAuth2.0验证接口设计实现了安全、高效地获取和使用用户信息,同时避免了频繁的用户认证,提升了用户体验。在实际开发中,还需要考虑错误处理、令牌刷新、安全性增强等细节,以确保系统的稳定...

    OAuth2.0基本原理及应用

    OAuth2.0通过在客户端和服务提供商之间建立一个授权层,确保了用户数据的安全性。 OAuth2.0的工作流程主要包括以下几个步骤: 1. 用户打开客户端,客户端请求用户授权。 2. 用户同意授权,授权信息被传递给客户端。...

    微信OAuth2.0网页授权接口

    在AuthAction中的初始化函数_initialize中进行了OAuth2.0受权,所有基于AuthAction的控制器都将进行受权过程(除了微信API认证过程wechatInitAuth)。 对于同一用户在受权过期时间内多次打开此控制器的页面,将不会...

    spring cloud + vue + oAuth2.0全家桶实战

    《Spring Cloud + Vue + OAuth2.0全家桶实战:构建企业级微服务项目》 在当前的互联网开发环境中,微服务架构已经成为企业级应用的重要选择。Spring Cloud作为Java领域的微服务治理框架,Vue.js作为前端的轻量级库...

    Java 微信网页授权登陆 OAuth2.0源码

    下载 ngrok 参考网址 ...使用 cd D:\ngrok-stable-windows-amd64 d: ngrok.exe authtoken 3WeiJgYsiohmTTbZ8HB5L_4DoK3ThFJ69Wx5iS8UGJz ... 下载 web 开发者工具,找到 下载地址 ...3、网页服务--》网页帐号--》修改--》......

    微信公众平台开发OAuth2.0网页授权认证

    微信公众平台开发OAuth2.0网页授权认证

    Spring Security OAuth2集成短信验证码登录以及第三方登录

    Spring Security OAuth2是基于Spring Cloud/Spring Boot环境下使用OAuth2.0的解决方案,为开发者提供了全套的组件来支持OAuth2.0认证。然而,在开发过程中,我们会发现由于Spring Security OAuth2的组件特别全面,...

    微信OAuth2.0网页授权接口PHP版用法示例.rar

     在AuthAction中的初始化函数```_initialize```中进行了OAuth2.0受权,所有基于AuthAction的控制器都将进行受权过程(除了微信API认证过程wechatInitAuth)。  对于同一用户在受权过期时间内多次打开此控制器的页面...

    百度第三方(OAuth2.0)登录

    通过学习和理解这些内容,开发者可以有效地将百度OAuth2.0登录集成到自己的C# MVC应用中,为用户提供更便捷的登录体验。同时,这种方式也适用于其他支持OAuth2.0的平台,如微信、QQ等,只需要更换对应的API和配置...

    OAuth 2.0授权框架.pdf

    无论是支付宝、微信还是其他第三方服务,都可以采用OAuth 2.0来实现接口的对接和安全的资源访问授权。由于文档中提及了RFC6749,即OAuth 2.0的具体规范文档,开发者可以通过深入研究RFC6749文档来获得关于OAuth 2.0...

    基于spring cloud + vue + oAuth2.0开发的前后端分离的商城系统,完整的购物流程、后端运营平台微服务项目

    spring cloud + vue + oAuth2.0全家桶实战,前后端分离模拟商城,完整的购物流程、后端运营平台,可以实现快速搭建企业级微服务项目。支持微信登录等三方登录。 功能点: 模拟商城,完整的购物流程、后端运营平台...

    oauth2.0鉴权

    在移动互联网时代,许多第三方服务,例如支付宝、微信等SDK均采用了OAuth 2.0来进行鉴权处理,以确保用户数据的安全性及应用间的信任关系。 #### 二、OAuth 2.0 基本概念 OAuth 2.0 主要涉及到四个关键的概念: 1...

    浅谈微信小程序登陆与Oauth

    理解OAuth 2.0 小程序官方文档 微信小程序之登录态维护(十一) 微信的登陆认证方式跟Oauth的授权码认证模式非常相似,接下来我大致讲解Oauth的三种常用模式以及与微信登陆认证的关联。 Oauth的三种常用模式 密码模式 ...

    微信企业号OAuth2验证接口的2种实例(使用SpringMVC)

    SpringMVC提供了便捷的注解支持和自定义过滤器/拦截器机制,使得开发者能灵活地集成和实现OAuth2认证流程。在实际项目中,根据业务需求选择合适的方法,并确保安全性,是实施OAuth2验证的关键。 注意,由于提供的...

Global site tag (gtag.js) - Google Analytics