【微信】第三方登录接口流程

简介: 微信登录介绍: 微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。

微信登录介绍:

微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。

准备工作:

在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。

创建网站应用

在创建网站应用快要完成的时候会设置一个返回域,此域要跟代码的返回地址一致(授权回调域最好写一级域名)。

 

 

提交审核,等待获取到APPID和AppSecret

接入流程示意图:

 

代码操作示例:

流程示意图:

 

第一步:请求CODE

第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在PC端打开以下链接:
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

注:若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与审核时填写的授权域名不一致或scope不为snsapi_login。

参数说明

 

返回说明

用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数

 

若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数

 

第二步:通过code获取access_token

通过code获取access_token:

 

参数说明

 

返回说明

 

 

错误返回样例:{"errcode":40029,"errmsg":"invalid code"}

刷新access_token有效期

access_token是调用授权关系接口的调用凭证,由于access_token有效期(目前为2个小时)较短,当access_token超时后,可以使用refresh_token进行刷新,access_token刷新结果有两种:

 

 

refresh_token拥有较长的有效期(30天),当refresh_token失效的后,需要用户重新授权。

请求方法

获取第一步的code后,请求以下链接进行refresh_token:

 

参数说明

 

返回说明

正确的返回:

 

 

 

错误返回样例:{"errcode":40030,"errmsg":"invalid refresh_token"}

注意:

1、Appsecret 是应用接口使用密钥,泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端,极有可能被恶意窃取(如反编译获取Appsecret);

2、access_token 为用户授权第三方应用发起接口调用的凭证(相当于用户登录态),存储在客户端,可能出现恶意获取access_token 后导致的用户数据泄漏、用户微信相关接口功能被恶意发起等行为;

3、refresh_token 为用户授权第三方应用的长效凭证,仅用于刷新access_token,但泄漏后相当于access_token 泄漏,风险同上。

第三步:通过access_token调用接口

获取access_token后,进行接口调用,有以下前提:

 

对于接口作用域(scope),能调用的接口有以下:

附加二维码登录代码示例:

步骤1:在页面中先引入如下JS文件(支持https):

步骤2:在需要使用微信登录的地方实例以下JS对象:

 

注:引入代码前要有占位容器来进行显示

参数说明

参数

是否必须

说明

id

第三方页面显示二维码的容器id

appid

应用唯一标识,在微信开放平台提交应用审核通过后获得

scope

应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可

redirect_uri

重定向地址,需要进行UrlEncode

state

用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验

style

提供"black"、"white"可选,默认为黑色文字描述。详见FAQ

href

自定义样式链接,第三方可根据实际需求覆盖默认样式。详见FAQ

 

F.A.Q

1. 什么是授权临时票据(code)?

答:第三方通过code进行获取access_token的时候需要用到,code的超时时间为10分钟,一个code只能成功换取一次access_token即失效。code的临时性和一次保障了微信授权登录的安全性。第三方可通过使用https和state参数,进一步加强自身授权登录的安全性。

2. 什么是授权作用域(scope)?

答:授权作用域(scope)代表用户授权给第三方的接口权限,第三方应用需要向微信开放平台申请使用相应scope的权限后,使用文档所述方式让用户进行授权,经过用户授权,获取到相应access_token后方可对接口进行调用。

3. 网站内嵌二维码微信登录JS代码中style字段作用?

答:第三方页面颜色风格可能为浅色调或者深色调,若第三方页面为浅色背景,style字段应提供"black"值(或者不提供,black为默认值),则对应的微信登录文字样式为黑色。

4.网站内嵌二维码微信登录JS代码中href字段作用?

答:如果第三方觉得微信团队提供的默认样式与自己的页面样式不匹配,可以自己提供样式文件来覆盖默认样式。

作者:YanBigFeg —— 颜秉锋        

       出处:http://www.cnblogs.com/yanbigfeg        

       本文版权归作者和博客园共有,欢迎转载,转载请标明出处。如果您觉得本篇博文对您有所收获,觉得小弟还算用心,请点击右下角的 [推荐],谢谢!

目录
相关文章
|
2月前
|
人工智能 JavaScript 定位技术
微信的接口都有哪些?
【10月更文挑战第17天】微信的接口都有哪些?
159 43
|
6月前
|
API 开发工具
企业微信SDK接口API调用-触发推送企业微信微信好友
企业微信SDK接口API调用-触发推送企业微信微信好友
|
6月前
|
API
微信API接口、微信二次开发API调用
微信API接口、微信二次开发API调用
|
7月前
|
JavaScript 数据安全/隐私保护 UED
微信扫码登录之接入规范
微信扫码登录之接入规范
162 1
|
移动开发 小程序 前端开发
小程序接入微信支付V3接口开发教程
最近做了一个小程序对接微信支付的需求,查看微信支付文档,还是感觉有点凌乱,所以做一个统一整理,供大家参考。
564 0
小程序接入微信支付V3接口开发教程
|
API
企业微信授权登录服务端API实战开发(1):企业微信环境部署
企业微信授权登录服务端API实战开发(1):企业微信环境部署
238 0
|
JSON Java 数据格式
java实现微信第三方登录流程源码详解,所遇到的坑
java实现微信第三方登录流程源码详解,所遇到的坑
584 0
java实现微信第三方登录流程源码详解,所遇到的坑
|
小程序 数据可视化 前端开发
微信开放平台之第三方平台开发,模板小程序如何提交?
微信第三方开发的精妙就在于可以用一套代码,孵化出多个相同功能的小程序,减少开发成本,包括时间和金钱​成本。而这最重要的一步就是将我们开发好的小程序上传到微信服务器,当做模板来使用。
546 0
微信开放平台之第三方平台开发,模板小程序如何提交?
|
API
微信小程序接口改版后的登录和会话保持流程
最近,腾讯为了改善微信小程序的使用体验、防止开发者滥用API,对现有的一些API做了改版,比较重要的就是登录和分享相关的API,这些改动都会涉及到对现有小程序的设计与代码变动(查看官方通知),所以还是值得关注一下的。
1808 0