微信公众号网页授权
2024-09-15
16
1. 前言2. 第一步:用户同意授权,获取 code3. 第二步:通过code换取网页授权 access_token (网页授权接口调用凭证)4. 第三步:刷新 access_token (网页授权接口调用凭证)5. 第四步:拉取用户信息6. 网页授权常见错误
1. 前言
网页授权官方文档
2. 第一步:用户同意授权,获取 code
引导用户打开授权页面
下面是微信官方给出的授权地址,以下 url 中大写的参数值代表的动态参数,需要开发者去传参,小写的参数值代表固定值,无需动态修改
appid:公众号 appid
redirect_uri: 用户同意授权后的回调地址
scope:授权作用域,可取值:snsapi_base、snsapi_userinfo
snsapi_base 不弹出授权页面,只能获取到用户openid
snsapi_userinfo 弹出授权页面,可获取到用户openid、昵称、头像等信息
https://open.weixin.qq.com/connect/oauth2/authorize?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
在 tp6.0 中的使用示例
public function index()
{
// 公众号appid
$appid = 'wx0a48233ca8de759e';
// 回调地址
$redirect_uri = url('grant', [], true, true);
// 对回调地址进行url编码
$redirect_uri = urlencode($redirect_uri);
// 授权作用域
$scope = 'snsapi_base、snsapi_userinfo'; // snsapi_base、snsapi_userinfo
// 授权页面
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appid}&redirect_uri={$redirect_uri}&response_type=code&scope={$scope}&state=STATE#wechat_redirect";
// 跳转到授权页面让用户授权
return redirect($url);
}
3. 第二步:通过code换取网页授权 access_token (网页授权接口调用凭证)
snsapi_base、snsapi_userinfo 返回的内容格式一样,只是 scope 为各自相应的值
{
"access_token":"46_F7gxRgt-dgY7SWa43sX8xxxx",
"expires_in":7200,
"refresh_token":"46_a-XaTkDiL5e47vEYVa3emUjMxxx",
"openid":"ozlgE6DGcfpHE1Qz69U9xKQtsRkw",
"scope":"snsapi_userinfo"
}
特别注意:snsapi_base 式的网页授权流程到此为止
4. 第三步:刷新 access_token (网页授权接口调用凭证)
5. 第四步:拉取用户信息
根据第二步或第三步获取到的 access_token
和 openid
获取用户信息
$openid = $res['openid'];
$access_token = $res['access_token'];
$api = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}&lang=zh_CN";
$info = $this->http_curl($api);
halt($info);
返回示例
^ array:9 [▼
"openid" => "ozlgE6DGcfpHE1Qz69U9xKQtsRkw"
"nickname" => "liang"
"sex" => 1
"language" => "zh_CN"
"city" => "开封"
"province" => "河南"
"country" => "中国"
"headimgurl" => "https://thirdwx.qlogo.cn/mmopen/vi_32/L3D1cS26ogySia7UNlTScztBicIWYFhSzzUnXalicpaYCJAia4oewvGgVw0qCZ58t8eqcb2FsBYTN2wiaiasiabDkHfWg/132"
"privilege" => []
]
6. 网页授权常见错误
一、提示微信客户端打开链接
因为网页授权是要获取微信用户的信息,所以必须在微信浏览器中打开授权页面(微信客户端:手机端
和 PC端微信浏览器
)
二、Scope 参数错误或没有 Scope 权限
可能的原因如下:
1、 使用的是个人订阅号,订阅号没有权限使用网页授权
2、使用的服务号,没有认证或认证已过期
三、redirect_uri 参数错误
授权回调页面域名配置错误,登陆公众号平台,在 “设置与开发-公众号设置-功能设置-网页授权域名” 中检查域名配置是否正确
更新于:18天前赞一波!
相关文章
- 绑定公众号的网页开发者
- 微信公众号模板消息接口
- c#网页保存为图片
- ThinkPHP6.0 + EasyWechat 4.x 公众号自动回复
- 小程序测试号、公众号测试号
- 微擎公众版在线安装(正版)
- 如何在python中使用pywebcopy克隆网页?
- 利用Python实现微信公众号文章的自动发布
- Google Web Designer 基于HTML5的网页视频图像广告制作工具
- C#正则表达式去除网页标签的id class style
- 使用Python获取网页数据的简单方法
- 还有人用Dreamweaver做网页吗?
- Java助力SEO优化:高效生成静态网页的策略与实践
- JS动态操控CSS样式:赋予网页无限生机
- WebAssembly:探索网页性能与安全的下一层深度优化
- 如何获取网页数据进行自动化测试
文章评论
评论问答