微信开放平台:微信扫码登录功能
官方文档:
https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html
1. 授权流程说明微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站 , 在微信用户授权登录已接入微信OAuth2.0的第三方应用后 , 第三方可以获取到用户的接口调用凭证(access_token) , 通过access_token可以进行微信开放平台授权关系接口调用 , 从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等 。
微信OAuth2.0授权登录目前支持authorization_code模式 , 适用于拥有server端的应用授权 。该模式整体流程为:
① 第三方发起微信授权登录请求 , 微信用户允许授权第三方应用后 , 微信会拉起应用或重定向到第三方网站 , 并且带上授权临时票据code参数;
② 通过code参数加上AppID和AppSecret等 , 通过API换取access_token;
③ 通过access_token进行接口调用 , 获取用户基本数据资源或帮助用户实现基本操作 。
文章插图
第一步:请求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的网址上 , 并且带上code和state参数
redirect_uri?code=CODE&state=STATE
若用户禁止授权 , 则重定向后不会带上code参数 , 仅会带上state参数redirect_uri?state=STATE
例如:登录一号店网站应用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
第二步:通过code获取access_token通过code获取access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&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"}
错误返回样例:{"errcode":40029,"errmsg":"invalid code"}
- Appsecret 是应用接口使用密钥 , 泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端 , 极有可能被恶意窃取(如反编译获取Appsecret);
- access_token 为用户授权第三方应用发起接口调用的凭证(相当于用户登录态) , 存储在客户端 , 可能出现恶意获取access_token 后导致的用户数据泄漏、用户微信相关接口功能被恶意发起等行为;
- refresh_token 为用户授权第三方应用的长效凭证 , 仅用于刷新access_token , 但泄漏后相当于access_token 泄漏 , 风险同上 。
第三步:通过access_token调用接口获取access_token后 , 进行接口调用 , 有以下前提:
- access_token有效且未超时;
- 微信用户已授权给第三方应用帐号相应接口作用域(scope) 。
文章插图
2. 授权流程代码因为微信开放平台的AppiD和APPSecret和微信公众平台的AppiD和AppSecret都是不同的 , 因此需要配置一下:
推荐阅读
- 在用微信授权登录吗?一个方法关闭微信授权登录,让微信更安全
- 一部华为手机,怎样同时登录3个微信?方法非常简单,一看就会
- 微信单删好友最新检测方法!安全不打扰,还能批量删除“僵尸粉”
- 教你微信7步缴纳特殊人群居民医疗保险
- 微信悄悄上线了两项新功能,非常实用
- 微信语音铃声怎么设置
- 怎么在微信上激活医保卡?怎么使用医保电子凭证
- 微信账号解封小妙招
- 换微信头像需谨慎?
- 微信设置禁止女朋友拉黑自己的方法分享