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

微信公众号网页授权

作者头像
很酷的站长
发布2023-01-03 08:26:59
3.9K0
发布2023-01-03 08:26:59
举报
文章被收录于专栏:站长的编程笔记
1. 前言

网页授权官方文档

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

引导用户打开授权页面

下面是微信官方给出的授权地址,以下 url 中大写的参数值代表的动态参数,需要开发者去传参,小写的参数值代表固定值,无需动态修改

appid:公众号 appid redirect_uri: 用户同意授权后的回调地址 scope:授权作用域,可取值:snsapi_base、snsapi_userinfo

snsapi_base 不弹出授权页面,只能获取到用户openid snsapi_userinfo 弹出授权页面,可获取到用户openid、昵称、头像等信息

代码语言:javascript
复制
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 两个参数

代码语言:javascript
复制
redirect_uri/?code=CODE&state=STATE

在 tp6.0 中的使用示例

代码语言:javascript
复制
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 为各自相应的值

代码语言:javascript
复制
{
"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_tokenopenid 获取用户信息

代码语言:javascript
复制
$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);

返回示例

代码语言:javascript
复制
^ 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 参数错误

授权回调页面域名配置错误,登陆公众号平台,在 “设置与开发-公众号设置-功能设置-网页授权域名” 中检查域名配置是否正确

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. 第一步:用户同意授权,获取 code
  • 3. 第二步:通过code换取网页授权 access_token (网页授权接口调用凭证)
  • 4. 第三步:刷新 access_token (网页授权接口调用凭证)
  • 5. 第四步:拉取用户信息
  • 6. 网页授权常见错误
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档