前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信网页授权

微信网页授权

作者头像
兔云小新LM
发布于 2020-05-19 08:24:13
发布于 2020-05-19 08:24:13
4.1K0
举报

在这里也不给大家做过多的介绍了,因为微信的开发手册已经写得很仔细了,关于一些注释代码里面已经有了,这里为了大家方便查看,我就直接copy微信手册的文档说明,便于大家阅读。

如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。

关于网页授权回调域名的说明

1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;

2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com无法进行OAuth2.0鉴权

3、如果公众号登录授权给了第三方开发者来进行管理,则不必做任何设置,由第三方代替公众号实现网页授权即可

关于网页授权的两种scope的区别说明

1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

关于网页授权access_token和普通access_token的区别

1、微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;

2、其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用。

关于UnionID机制

1、请注意,网页授权获取用户基本信息也遵循UnionID机制。即如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。

2、UnionID机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的。

关于特殊场景下的静默授权

1、上面已经提到,对于以snsapi_base为scope的网页授权,就静默授权的,用户无感知;

2、对于已关注公众号的用户,如果用户从公众号的会话或者自定义菜单进入本公众号的网页授权页,即使是scope为snsapi_userinfo,也是静默授权,用户无感知。

具体而言,网页授权流程分为四步:

1、引导用户进入授权页面同意授权,获取code

2、通过code换取网页授权access_token(与基础支持中的access_token不同)

3、如果需要,开发者可以刷新网页授权access_token,避免过期

4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)

目录

1 第一步:用户同意授权,获取code

2 第二步:通过code换取网页授权access_token

3 第三步:刷新access_token(如果需要)

4 第四步:拉取用户信息(需scope为 snsapi_userinfo)

5 附:检验授权凭证(access_token)是否有效

第一步:用户同意授权,获取code

在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。

尤其注意:由于授权操作安全等级较高,所以在发起授权请求时,微信会对授权链接做正则强匹配校验,如果链接的参数顺序不对,授权页面将无法正常访问

参考链接(请在微信客户端中打开此链接体验):

scope为snsapi_base

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdap

ter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_bas

e&state=123#wechat_redirect

scope为snsapi_userinfo

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=

code&scope=snsapi_userinfo&state=STATE#wechat_redirect

尤其注意:跳转回调redirect_uri,应当使用https链接来确保授权code的安全性。

参数说明

参数

是否必须

说明

appid

公众号的唯一标识

redirect_uri

授权后重定向的回调链接地址,请使用urlEncode对链接进行处理

response_type

返回类型,请填写code

scope

应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)

state

重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节

#wechat_redirect

无论直接打开还是做页面302重定向时候,必须带此参数

下图为scope等于snsapi_userinfo时的授权页面:

用户同意授权后

如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。

code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

第二步:通过code换取网页授权access_token

首先请注意,这里通过code换取的是一个特殊的网页授权access_token,与基础支持中的access_token(该access_token用于调用其他接口)不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。

尤其注意:由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。

请求方法

获取code后,请求以下链接获取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

返回说明

正确时返回的JSON数据包如下:

{ "access_token":"ACCESS_TOKEN",

"expires_in":7200,

"refresh_token":"REFRESH_TOKEN",

"openid":"OPENID",

"scope":"SCOPE" }

参数

描述

access_token

网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同

expires_in

access_token接口调用凭证超时时间,单位(秒)

refresh_token

用户刷新access_token

openid

用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID

scope

用户授权的作用域,使用逗号(,)分隔

错误时微信会返回JSON数据包如下(示例为Code无效错误):

{"errcode":40029,"errmsg":"invalid code"}

第三步:刷新access_token(如果需要)

由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。

请求方法

获取第二步的refresh_token后,请求以下链接获取access_token:

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

参数

是否必须

说明

appid

公众号的唯一标识

grant_type

填写为refresh_token

refresh_token

填写通过access_token获取到的refresh_token参数

返回说明

正确时返回的JSON数据包如下:

{ "access_token":"ACCESS_TOKEN",

"expires_in":7200,

"refresh_token":"REFRESH_TOKEN",

"openid":"OPENID",

"scope":"SCOPE" }

参数

描述

access_token

网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同

expires_in

access_token接口调用凭证超时时间,单位(秒)

refresh_token

用户刷新access_token

openid

用户唯一标识

scope

用户授权的作用域,使用逗号(,)分隔

错误时微信会返回JSON数据包如下(示例为code无效错误):

{"errcode":40029,"errmsg":"invalid code"}

第四步:拉取用户信息(需scope为 snsapi_userinfo)

如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。

请求方法

http:GET(请使用https协议) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

参数说明

参数

描述

access_token

网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同

openid

用户的唯一标识

lang

返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语

返回说明

正确时返回的JSON数据包如下:

{ "openid":" OPENID",

" nickname": NICKNAME,

"sex":"1",

"province":"PROVINCE"

"city":"CITY",

"country":"COUNTRY",

"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ

4eMsv84eavHiaiceqxibJxCfHe/46",

"privilege":[ "PRIVILEGE1" "PRIVILEGE2" ],

"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"

}

参数

描述

openid

用户的唯一标识

nickname

用户昵称

sex

用户的性别,值为1时是男性,值为2时是女性,值为0时是未知

province

用户个人资料填写的省份

city

普通用户个人资料填写的城市

country

国家,如中国为CN

headimgurl

用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。

privilege

用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)

unionid

只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。

错误时微信会返回JSON数据包如下(示例为openid无效):

{"errcode":40003,"errmsg":" invalid openid "}

附:检验授权凭证(access_token)是否有效

请求方法

http:GET(请使用https协议) https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID

参数说明

参数

描述

access_token

网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同

openid

用户的唯一标识

返回说明

正确的JSON返回结果:

{ "errcode":0,"errmsg":"ok"}

错误时的JSON返回示例:

{ "errcode":40003,"errmsg":"invalid openid"}

文件代码下载:http://pan.baidu.com/s/1i5DMHyl

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卡二条的技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
CVPR 2023|EfficientViT:让ViT更高效部署实现实时推理(附源码)
论文地址:https://arxiv.org/pdf/2305.07027.pdf
计算机视觉研究院
2023/08/24
1.2K0
CVPR 2023|EfficientViT:让ViT更高效部署实现实时推理(附源码)
Trio-ViT | 专门针对高效 ViTs 的卷积 Transformer混合架构的加速器!
感谢自注意力机制强大的全局信息提取能力,Transformers在各种自然语言处理(NLP)任务中取得了巨大成功。这一成功催生了视觉Transformers(ViTs)[4, 5]的快速发展,它们在计算机视觉领域受到了越来越多的关注,并且与基于卷积的对应物相比显示出优越的性能。
集智书童公众号
2024/05/17
5230
Trio-ViT | 专门针对高效 ViTs 的卷积 Transformer混合架构的加速器!
南开大学提出 ADFQ-ViT,解决 ViT 在低比特量化时显著准确性损失的问题 !
视觉 Transformer (ViTs)[(7)] 在各种计算机视觉任务中,如图像分类、目标检测和实例分割,都取得了卓越的性能。尽管如此,与之前常见的视觉基础网络如卷积神经网络(CNNs)[(18)] 相比,ViTs 由于其大量的参数,需要显著更多的内存和计算资源。因此,在资源受限的环境下或实时推理的约束下部署ViTs仍然是一个挑战。
未来先知
2024/08/08
4910
南开大学提出 ADFQ-ViT,解决 ViT 在低比特量化时显著准确性损失的问题 !
NeurIPS 2021 Transformer部署难?北大&华为诺亚提出Vision Transformer的后训练量化方法
本文分享 NeurIPS 2021 论文『Post-Training Quantization for Vision Transformer』,由北大&华为诺亚联合提出 Vision Transformer 的后训练量化方法,解决 Transformer 部署难的问题。
CV君
2021/10/27
1.6K0
加速AGI落地!使用4-bit整数训练Transformer,比FP16快2.2倍,提速35.1%
论文地址:https://arxiv.org/pdf/2306.11987.pdf
计算机视觉研究院
2023/08/24
3330
加速AGI落地!使用4-bit整数训练Transformer,比FP16快2.2倍,提速35.1%
CAS-ViT:引领高效移动视觉应用的革新
在视觉转换器(Vision Transformers, ViTs)领域,随着技术的不断发展,研究者们不断探索如何在保持高效性能的同时,降低模型的计算复杂度,以满足资源受限场景(如移动设备)的需求。近期,一种名为CAS-ViT(卷积加性自注意力视觉转换器)的模型横空出世,它以其出色的效率和性能平衡,被誉为“最快的ViT模型”,吸引了广泛的关注。
AI浩
2024/10/22
2340
CAS-ViT:引领高效移动视觉应用的革新
华为诺亚Transformer后量化技术:效率百倍提升,视觉&NLP性能不减
大型预训练模型在计算机视觉和自然语言处理中展现了巨大的潜力,但是模型大、参数多的问题也给它们的商业化落地带来了很大挑战。模型压缩技术是当前的研究热点,模型量化是其中的一个重要分支。
机器之心
2022/02/23
8850
华为诺亚Transformer后量化技术:效率百倍提升,视觉&NLP性能不减
Backbone创新 | 中科大联合百度提出全新Transformer Backbone
最近,Vision Transformer(ViT)在各种计算机视觉任务上取得了显著的性能提升,例如图像分类、目标检测和语义分割。同时,广泛认为,由于Token-Level多Head自注意力(MHSA)模块带来的二次计算复杂度,Vision Transformer的计算成本较高。这种模型复杂性使得视觉Transformer在实际应用中的推理速度是一个关Key 因素时,相对于卷积神经网络(CNN)处于劣势,特别是与高效的CNN变体相比。
集智书童公众号
2023/09/04
4970
Backbone创新 | 中科大联合百度提出全新Transformer Backbone
华为诺亚极简网络,靠13层就拿下83%精度(附源代码)
论文地址:https://arxiv.org/pdf/2305.12972.pdf
计算机视觉研究院
2023/08/24
4190
华为诺亚极简网络,靠13层就拿下83%精度(附源代码)
What?UFO! | UFO-ViT用X-Norm让你的Transformer模型回归线性复杂度
Vision transformers已成为计算机视觉任务的重要模型之一。虽然它们优于早期的卷积网络,但使用传统的自注意力算法时,其复杂度是
集智书童公众号
2021/10/25
1.1K0
What?UFO! | UFO-ViT用X-Norm让你的Transformer模型回归线性复杂度
北京大学提出 PTQ4ViT | 双均匀量化+Hessian引导度量,推进Transformer模型落地
自注意力模块是Transformer的基本构建块,用于捕捉全局信息。受到Transformer在自然语言处理(NLP)任务上的成功启发,研究人员将自注意力模块引入了计算机视觉。他们用自注意力模块替代了卷积神经网络(CNNs)中的卷积层,将这些网络称为视觉Transformer。视觉Transformer在许多计算机视觉任务上与CNNs相媲美,有巨大的潜力用于各种应用。
集智书童公众号
2023/11/01
1.4K0
北京大学提出 PTQ4ViT | 双均匀量化+Hessian引导度量,推进Transformer模型落地
人脸技术:不清楚人照片修复成高质量高清晰图像框架(附源代码下载)
关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2201.06374.pdf 代码地址:https://github.com/wzhouxiff/RestoreFormer.git 计算机视觉研究院专栏 作者:Edison_G Blind face恢复是从未知退化中恢复高质量的人脸图像。由于人脸图像包含丰富的上下文信息,研究者提出了一种方法,RestoreFormer,它
计算机视觉研究院
2022/07/18
6110
人脸技术:不清楚人照片修复成高质量高清晰图像框架(附源代码下载)
SLAB:华为开源,通过线性注意力和PRepBN提升Transformer效率 | ICML 2024
论文: SLAB: Efficient Transformers with Simplified Linear Attention and Progressive Re-parameterized Batch Normalization
VincentLee
2024/08/22
1840
SLAB:华为开源,通过线性注意力和PRepBN提升Transformer效率 | ICML 2024
Vision Transformer 必读系列之图像分类综述(三): MLP、ConvMixer 和架构分析
https://github.com/open-mmlab/awesome-vit
OpenMMLab 官方账号
2022/02/28
3.1K0
Vision Transformer 必读系列之图像分类综述(三): MLP、ConvMixer 和架构分析
VIT Vision Transformer | 先从PyTorch代码了解
【前言】:看代码的时候,也许会不理解VIT中各种组件的含义,但是这个文章的目的是了解其实现。在之后看论文的时候,可以做到心中有数,而不是一片茫然。
机器学习炼丹术
2021/03/04
2.3K0
北航提出 PTQ4SAM | 一种高效的分割任何模型训练后量化框架,实现了无损精度,速度提高了3.9 倍 !
具有卓越的零样本能力和用户友好的灵活提示技术,Segment Anything Model(SAM)最近已成为一系列通用视觉应用中的新型基础模型,包括图像分割、目标检测、跟踪和其他下游任务。然而,SAM中的 Transformer 架构需要密集的计算和内存占用,这阻碍了在资源受限的边缘设备上的实际部署。
AIGC 先锋科技
2024/07/08
6390
北航提出  PTQ4SAM  |  一种高效的分割任何模型训练后量化框架,实现了无损精度,速度提高了3.9 倍 !
一文全览 | 全览iPhone 12就可以实时推理的移动端ViT
受Transformer模型在自然语言处理(NLP)应用中的成功启发,A.Dosovitskiy、Dosovitski等人介绍了用于计算机视觉(CV)应用的视觉Transformer(ViT)。视觉Transformer模型在ImageNet数据集上显示出77.9%至81.3%的Top-1准确率,并已用于许多下游图像识别任务,如分类、目标检测和分割。
集智书童公众号
2023/09/04
4040
一文全览 | 全览iPhone 12就可以实时推理的移动端ViT
真香!Vision Transformer 快速实现 Mnist 识别
引言:基于深度学习的方法在计算机视觉领域中最典型的应用就是卷积神经网络CNN。CNN中的数据表示方式是分层的,高层特征表示依赖于底层特征,由浅入深抽象地提取高级特征。CNN的核心是卷积核,具有平移不变性和局部敏感性等特点,可以捕捉局部的空间信息。
AI科技大本营
2022/04/05
1.6K0
真香!Vision Transformer 快速实现 Mnist 识别
Transformer可以不需要Softmax?Kakao提出了UFO-ViT,性能高,计算量还小
视觉Transformer已成为计算机视觉任务的重要模型之一。虽然它们优于之前的卷积神经网络,但其复杂度是与输入特征长度N呈二次关系。
CV君
2021/11/11
9860
Transformer可以不需要Softmax?Kakao提出了UFO-ViT,性能高,计算量还小
DVT:华为提出动态级联Vision Transformer,性能杠杠的 | NeurIPS 2021
论文: Not All Images are Worth 16x16 Words: Dynamic Transformers for Efficient Image Recognition
VincentLee
2024/07/03
1890
DVT:华为提出动态级联Vision Transformer,性能杠杠的 | NeurIPS 2021
推荐阅读
CVPR 2023|EfficientViT:让ViT更高效部署实现实时推理(附源码)
1.2K0
Trio-ViT | 专门针对高效 ViTs 的卷积 Transformer混合架构的加速器!
5230
南开大学提出 ADFQ-ViT,解决 ViT 在低比特量化时显著准确性损失的问题 !
4910
NeurIPS 2021 Transformer部署难?北大&华为诺亚提出Vision Transformer的后训练量化方法
1.6K0
加速AGI落地!使用4-bit整数训练Transformer,比FP16快2.2倍,提速35.1%
3330
CAS-ViT:引领高效移动视觉应用的革新
2340
华为诺亚Transformer后量化技术:效率百倍提升,视觉&NLP性能不减
8850
Backbone创新 | 中科大联合百度提出全新Transformer Backbone
4970
华为诺亚极简网络,靠13层就拿下83%精度(附源代码)
4190
What?UFO! | UFO-ViT用X-Norm让你的Transformer模型回归线性复杂度
1.1K0
北京大学提出 PTQ4ViT | 双均匀量化+Hessian引导度量,推进Transformer模型落地
1.4K0
人脸技术:不清楚人照片修复成高质量高清晰图像框架(附源代码下载)
6110
SLAB:华为开源,通过线性注意力和PRepBN提升Transformer效率 | ICML 2024
1840
Vision Transformer 必读系列之图像分类综述(三): MLP、ConvMixer 和架构分析
3.1K0
VIT Vision Transformer | 先从PyTorch代码了解
2.3K0
北航提出 PTQ4SAM | 一种高效的分割任何模型训练后量化框架,实现了无损精度,速度提高了3.9 倍 !
6390
一文全览 | 全览iPhone 12就可以实时推理的移动端ViT
4040
真香!Vision Transformer 快速实现 Mnist 识别
1.6K0
Transformer可以不需要Softmax?Kakao提出了UFO-ViT,性能高,计算量还小
9860
DVT:华为提出动态级联Vision Transformer,性能杠杠的 | NeurIPS 2021
1890
相关推荐
CVPR 2023|EfficientViT:让ViT更高效部署实现实时推理(附源码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档